2.6.30.5 Linux 内核中的 struct task_struct 定义在哪里?

2.6.30.5 Linux 内核中的 struct 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;
}  

但是,不幸的是,当我升级到版本 2.6.30.5 时,我查看了同一个文件,我只找到了 的声明task_struct,例如:

struct task_struct;

我不知道应该参考哪个文件来指定我自己的文件task_struct?有人能帮我吗?

答案1

使用grep或任何其他搜索工具来查找定义:

grep -r '^struct task_struct ' include

或者在线搜索LXR: 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。

相关内容