2.6.30.5 Linuxカーネルでは、task_struct構造体はどこで定義されていますか?

2.6.30.5 Linuxカーネルでは、task_struct構造体はどこで定義されていますか?

カーネル2.6.15バージョンでは、task_structファイル(include/linux/sched.h)の内容を書き換えることができることがわかりました。たとえば、次のようになります。

struct task_struct {  
    unsigned did_exec:1;  
    pid_t pid;  
    pid_t tgid;  
    ...
    char hide;
}  

task_structしかし、残念ながら、バージョン2.6.30.5にアップグレードしたときに同じファイルを見ると、次の宣言だけが見つかりました。

struct task_struct;

私自身を指定するには、どのファイルを参照する必要があるのか​​わかりませんtask_struct。誰でも私を助けることができますか?

答え1

grep定義を見つけるには、または他の検索ツールを使用してください。

grep -r '^struct task_struct ' include

またはオンラインで検索してみてくださいLX: http://lxr.linux.no/linux+v2.6.30.5/+search?search=task_struct

構造はまだに定義されていますinclude/linux/sched.h。一つある前方宣言相互再帰的な型定義の場合定義もっとダウン。

答え2

私はDebianスクイーズを使用しています。ヘッダーには現在カーネルに対応する定義があります/usr/src/linux-headers-2.6.32-5-common-vserver/include/linux/sched.h。定義はから始まります。

struct task_struct {
        volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
        void *stack;
        atomic_t usage;
        unsigned int flags;     /* per process flags, defined below */
        unsigned int ptrace;

        int lock_depth;         /* BKL lock depth */

HTH。

関連情報