如何在 mac os x 的内核扩展项目中使用 zlib?
我想在 mac os 上开发一个网络内核扩展。我在函数 sf_data_in() 中获得了一些 gzip 格式的数据。我包含了名为
的头文件,当我使用“kextload”加载 kext 后运行下面的代码时,我的 Mac 崩溃了。
z_stream strm;
bzero(&strm, sizeof(z_stream));
if (Z_OK != inflateInit2(&strm))
{
printf("inflateInit error.\n");
inflateEnd(&strm);
return 0;
}
谁能告诉我如何在内核编程中使用它。最好提供一些样品。 非常感谢。
I want to develop a network kernel extension on mac os. I got some data with gzip format in function sf_data_in(). I included the header file named <libkern/zlib.h>
, and my mac crashed when it was running the code below after I loading the kext with "kextload".
z_stream strm;
bzero(&strm, sizeof(z_stream));
if (Z_OK != inflateInit2(&strm))
{
printf("inflateInit error.\n");
inflateEnd(&strm);
return 0;
}
who can tell me how to use it in kernel programming. it's much better to give some samples.
Thanks very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您向
inflateInit2()
传递了错误数量的参数,它需要指向流的指针和以位为单位的窗口大小。如果您不想设置后者,请使用inflateInit()
代替。您可能还想使用 zlib 查看一些内核代码,ppp_deflate.c, ipcomp_core.c
You are passing the wrong number of parameters to
inflateInit2()
, it requires both a pointer to a stream and the window size in bits. if you do not wish to set the latter, useinflateInit()
instead.You may also want to look at some of the kernel code using zlib, ppp_deflate.c, ipcomp_core.c
我在 arch/powerpc/boot/gunzip_util.c 文件,也许它将是您的代码的一个很好的起点。
I found some use of the zlib kernel library in the arch/powerpc/boot/gunzip_util.c file, maybe it will be a good starting point for your code.