如何在 mac os x 的内核扩展项目中使用 zlib?

发布于 2024-11-30 13:36:00 字数 404 浏览 0 评论 0原文

我想在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼亦尘 2024-12-07 13:36:00

您向 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, use inflateInit() instead.

You may also want to look at some of the kernel code using zlib, ppp_deflate.c, ipcomp_core.c

独享拥抱 2024-12-07 13:36:00

我在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文