2013-03-02 2 views
5

Mi chiedo se c'è un gancio che potrebbe essere utilizzato in un modulo del kernel Linux che viene generato quando un'applicazione spazio utente/processo viene ucciso?Linux segnale di modulo del kernel sul processo userspace ucciso

+0

È solo per un processo specifico o tutti i processi? Sei interessato al processo che riceve determinati segnali o il processo sta appena uscendo con grazia? – Tuxdude

+1

Su ** ARM **, '#include ' e 'thread_register_notifier()'. Usa 'THREAD_NOTIFY_EXIT'. Vedere: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/include/asm/thread_notify.h –

+0

@Tuxdude: E 'per tutti i processi e per qualsiasi segnale Nel mio caso il mio modulo del kernel sta salvando alcuni dati basati sul PID e deve essere pulito non appena il processo muore. – ZedTuX

risposta

2

Potresti prima registrarsi per una catena di notifica all'interno del vostro modulo del kernel.

All'interno get_signal_to_deliver (kernel/signal.c), qualsiasi procedimento che ha appena (essendo questo un termine IMHO relativa) stato ucciso ha la sua PF_SIGNALED bandiera viene impostato. Qui potreste controllare il nome della corrente processo usando il suo campo Tcomm in questo modo:

char tcomm[sizeof(current->comm)]; 
get_task_comm(tcomm, current); 

Se è davvero il processo in questione, si può solo sparare la catena di notifica, che risveglierà il vostro modulo che ha stato in attesa su quella catena.

+0

Grazie! Darò un'occhiata a questo! – ZedTuX