2013-03-02 13 views
5

Zastanawiam się, czy istnieje haczyk, który mógłby zostać użyty w module jądra Linux, który jest uruchamiany, gdy aplikacja/proces przestrzeni użytkownika zostanie zabity?Sygnał modułu jądra Linux w procesie przestrzeni użytkownika zabity

+0

Czy dotyczy to tylko określonego procesu lub wszystkich procesów? Czy jesteś zainteresowany procesem otrzymującym pewne sygnały lub proces, który właśnie kończy się z gracją? – Tuxdude

+1

Na ** ARM **, '#include ' i 'thread_register_notifier()'. Użyj 'THREAD_NOTIFY_EXIT'. Zobacz: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/include/asm/thread_notify.h –

+0

@Tuxdude: Jest dla wszystkich procesów i dla wszelkie sygnały. W moim przypadku mój moduł jądra zapisuje niektóre dane w oparciu o PID i musi zostać oczyszczony, gdy tylko proces się skończy. – ZedTuX

Odpowiedz

2

Możesz najpierw zarejestrować łańcuch powiadomień w swoim module jądra.

Wewnątrz get_signal_to_deliver (jądro /signal.c), jakiegokolwiek procesu, który ma tylko (co jest pojęciem względnym IMHO) został zabity został jego PF_SIGNALED znacznik jest ustawiany. Tutaj można sprawdzić nazwy bieżącego procesu używając jego pole tcomm tak:

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

Jeśli to jest rzeczywiście proces pod znakiem zapytania, można po prostu odpalić łańcuch powiadomień, które będą obudzić swój moduł, który ma czekali na ten łańcuch.

+0

Dziękuję! Zerknę na to! – ZedTuX

Powiązane problemy