Onde está a definição de struct task_struct no kernel Linux 2.6.30.5?

9

No kernel da versão 2.6.15, descobri que posso reescrever o task_struct no arquivo (include / linux / sched.h), como:

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

Mas, infelizmente, quando atualizei para a versão 2.6.30.5, eu olhei pelo mesmo arquivo, apenas encontrei uma declaração do task_struct , como:

struct task_struct;

E não tenho idéia de qual arquivo devo referir para especificar meu próprio task_struct ? Alguém pode me ajudar?

    
por kaiwii ho 30.01.2012 / 03:41

2 respostas

6

Use grep ou qualquer outra ferramenta de pesquisa para procurar a definição:

grep -r '^struct task_struct ' include

Ou pesquise on-line em LXR : link

A estrutura ainda está definida em include/linux/sched.h . Há uma declaração de encaminhamento que é usada em definições de tipo mutuamente recursivas , e a definição está mais abaixo.

    
por 31.01.2012 / 00:34
3

Estou usando o Debian squeeze. Eu vejo uma definição nos cabeçalhos correspondentes ao meu kernel atual, em /usr/src/linux-headers-2.6.32-5-common-vserver/include/linux/sched.h . A definição começa com

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.

    
por 30.01.2012 / 05:18