Я должен проанализировать двоичные данные, предоставляемые ядром Linux. Эти двоичные данные представляют собой некоторые классические структуры данных, используемые в ядре.
Например, мне нужно проанализировать структуру, где первое значение timeval
структура. В исходном коде ядра оно определяется как:
struct timeval {
__kernel_time_t tv_sec; /* seconds */
__kernel_suseconds_t tv_usec; /* microseconds */
};
Так что я должен знать размер __kernel_time_t
а также __kernel_suseconds_t
,
__kernel_time_t
определяется как: typedef long __kernel_time_t
Долго.
Так как я должен проанализировать эти двоичные структуры (в строке) в PHP с unpack()
(да, я знаю, у меня есть странные идеи), я должен получить размер целочисленных размеров ядра.
Как я могу этого достичь? Встроенная и JiT-скомпилированная C-программа, которая выполняет sizeofs? Получение конфигурации компиляции с gcc
или же getconf
команды? Какой самый лучший и более переносимый способ сделать это, и нужно ли реализовывать резервную систему (например, с помощью getconf, если компиляция C недоступна)?
Вы не объяснили, что вы действительно пытаетесь сделать, и в результате ваш вопрос кажется неоднозначным. Что вы подразумеваете под
Я должен проанализировать двоичные данные, предоставляемые ядром Linux. Эти двоичные данные представляют собой некоторые классические структуры данных, используемые в ядре.
Вам нужно интерпретировать вещи, возвращаемые из системных вызовов? или же некоторые внутренние структуры ядра?
Если первое, вы можете просто пойти с этим дерьмовым решением компиляции материала и проверки результата. Но ты хочешь в пользовательском пространстве заголовки. Если последнее, вам нужны отладочные символы для ядра, и вы все равно не хотите их анализировать. Такие инструменты, как crash (отладчик), могут сделать это за вас.
Других решений пока нет …