2011-08-18 104 views
2

我想在mac os上开发一个网络内核扩展。我在函数sf_data_in()中用gzip格式获得了一些数据。我包含名为<libkern/zlib.h>的头文件,当我使用“kextload”加载kext时,我的mac在运行下面的代码时崩溃了。如何在mac os x的内核扩展项目中使用zlib?

z_stream strm; 
bzero(&strm, sizeof(z_stream)); 

if (Z_OK != inflateInit2(&strm)) 
{ 
    printf("inflateInit error.\n"); 

    inflateEnd(&strm); 

    return 0; 
} 

谁可以告诉我如何在内核编程中使用它。提供一些样品要好得多。 非常感谢。

回答

0

我在arch/powerpc/boot/gunzip_util.c文件中发现了一些zlib内核库的使用,也许这对您的代码来说是一个很好的起点。

+0

感谢您的帮助。但是gunzip是针对Linux的,你能否告诉我如何在Mac OS X或其他一些解决方案中使用zlib作为内核扩展。再次感谢! – kyle

+0

@kyle:哦,我没有注意到是在OSX内核中,我只注意到内核字... :( –

2

您将错误的参数数量传递到inflateInit2(),它需要指向流的指针和窗口大小(以位为单位)。如果您不想设置后者,请改为使用inflateInit()

你可能也想看看一些使用zlib的,ppp_deflate.c内核代码,ipcomp_core.c

相关问题