2013-07-11 5 views
1

Я пытаюсь узнать размер task_struct. таким образом, я загрузил исходный код linux с веб-сайта, и я создал главные файлы, введя команду make headers_install в терминал в корневой каталог исходного кода.linux kernel head file

#include<stdio.h> 
#include<linux/sched.h> 
int main() 
{ 
    printf("%d\n",sizeof(struct task_struct)). 
    return 0; 
} 

набрав команду к termial для компиляции и исходный код gcc -g -I *path/to/linux*-source/usr/include test.c -o test. Однако терминал показывает, что struct task_struct не определяет материал. Могли бы ребята помочь мне разобраться? Действительно оценен.

+0

AFAIK struct будет использоваться только в ядре и не подвергается действию пользователя. – hek2mgl

ответ

3

Эта структура предназначена только для внутреннего использования ядра. Это определение довольно длинное и в значительной степени зависит от конфигурации ядра. Таким образом, размер структуры также зависит от конфигурации ядра, и вы не можете получить его из пользовательского пространства.

Если вы не извлечете конфигурацию ядра, это плохая идея, как и для меня. Лучше всего написать модуль ядра.

+0

благодарит за помощь. Больше, не могли бы вы дать дополнительную помощь, чтобы сообщить мне, что мне нужно делать? что означает шаги для записи модуля ядра. разделяя ссылку или что-то еще, поскольку ссылка также приветствуется. Еще раз спасибо. – kevin

+0

Это довольно простое руководство для программирования модулей ядра http://www.tldp.org/LDP/lkmpg/2.6/html/. Вы можете изменить первый пример, чтобы сделать то, что вы хотите, с небольшим количеством проблем. –