Как использовать zlib в проектах расширения ядра для mac os x?

Я хочу разработать расширение сетевого ядра для Mac OS. Я получил некоторые данные в формате gzip в функции sf_data_in(). Я включил заголовочный файл с именем <libkern/zlib.h>, и мой Mac разбился, когда он запускал приведенный ниже код после загрузки kext с помощью «kextload».

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

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

    inflateEnd(&strm);

    return 0;
}

кто может сказать мне, как использовать его в программировании ядра. гораздо лучше дать несколько образцов. Большое спасибо.


person kyle    schedule 18.08.2011    source источник


Ответы (2)


Вы передаете неправильное количество параметров в inflateInit2(), для этого требуется как указатель на поток, так и размер окна в битах. если вы не хотите устанавливать последнее, используйте вместо него inflateInit().

Вы также можете посмотреть код ядра с помощью zlib, ppp_deflate.c, ipcomp_core.c

person Hasturkun    schedule 18.08.2011

Я нашел некоторое использование библиотеки ядра zlib в arch/powerpc/boot/gunzip_util.c, возможно, он станет хорошей отправной точкой для вашего кода.

person Cédric Julien    schedule 18.08.2011
comment
Спасибо за вашу помощь. Но gunzip предназначен для Linux, не могли бы вы рассказать мне, как использовать zlib в качестве расширения ядра в Mac OS X или некоторых других решениях. Спасибо еще раз! - person kyle; 18.08.2011
comment
@kyle: о, я не заметил, что это было в ядре OSX, я просто заметил слово ядра ... :( - person Cédric Julien; 18.08.2011