Red de conocimiento informático - Aprendizaje de programación - Preguntas sobre el código fuente del kernel de Linux pid_task

Preguntas sobre el código fuente del kernel de Linux pid_task

Conclusión: pids[tipo].pid_list, el kernel lo trata como una ruta de cadena (excepto que es necesario reemplazar el tipo).

Funciona de la siguiente manera:

El descriptor de proceso task_struct contiene el campo pids, que es una matriz

struct?task_struct?{

..

struct?pid?pids[PIDTYPE_MAX];

struct?pids[PIDTYPE_MAX];

El campo pids es una ruta de cadena. MAX];

};

El tipo de pid se define de la siguiente manera: struct?pid

{

int?nr;

struct?hlist_node?pid_chain;

struct?list_head?pid_list; ?//?*?elem

};

pid_task macro #define?pid_task (elem,?type)?

list_entry(elem,?struct?task_struct,?pids[type].pid_list)

Resumiendo, obtuvimos lo siguiente información

p>

elem inicialmente apunta a la variable pid_list de tipo struct list_head,

pid_list(pid[type].pid_list)

pid_task macro #define?

Elem inicialmente apunta a una variable pid_list de tipo struct list_head,

pid_list (al que se accede a través de .pid_list) que contiene pid (al que se accede a través de pids[tipo]) es una entrada en el descriptor del proceso member pids,

p>

Por lo tanto, la ruta de la variable señalada por elem es?pids[type].pid_list