Encontre o criador de uma tarefa

1

Eu gostaria de encontrar a tarefa do criador de uma tarefa arbitrária no kernel do Linux. No entanto, não tenho certeza se existe uma maneira de fazer isso em geral.

Normalmente, você pode encontrar o criador de uma tarefa por meio do membro real_parent em seu struct task_struct . Meu problema está na manipulação do kernel dos grupos de threads.

Suponha que um processo no modo de usuário (tarefa A no kernel) crie um encadeamento (tarefa B no kernel). Para fazer isso, o clone syscall é feito com o sinalizador CLONE_THREAD . O kernel copia a tarefa A para criar a tarefa B e executa a inicialização específica do thread. Parte disso é que o real_parent de B é definido como real_parent de A ( veja o código em kernel / fork.c ).

Portanto, a relação pai é entre grupos de threads (ou seja, processos no modo de usuário), não entre tarefas. Parece que as tarefas em um grupo de threads são vistas como irmãos sem hierarquia entre elas.

Isso não me torna óbvio como descobrir por qual tarefa uma determinada tarefa foi criada. Eu inspecionei o código de bifurcação e procurei pelos membros de struct task_struct , mas não encontrei nada. Existe uma maneira de identificar o criador de uma tarefa?

    
por j0ker 24.04.2015 / 12:47

0 respostas