2011-08-18 103 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

相關問題