カーネル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。