È possibile ricevere una notifica (tramite richiamata o simile) quando viene eseguito un nuovo processo, quando uno viene chiuso e quando lo stato cambia (ad esempio, interrotto, impaginato, ecc.)? In user-land, sarebbe facile impostare un listener di directory su/proc.Ascolto di nuovi processi in Linux Kernel Module
risposta
Avete preso in considerazione i kprobe? Puoi usare kprobes per eseguire una funzione di callback quando viene eseguito un codice kernel. Ad esempio, è possibile aggiungere un kprobe do_fork
per avvisare quando vengono creati nuovi processi come in this example.
Analogamente, è possibile aggiungere una sonda per do_exit()
da intercettare all'uscita dei processi.
Per modificare lo stato, è possibile avere una sonda di ritorno su sched_switch()
e rilevare quando lo stato cambia. A seconda dell'applicazione, questo può aggiungere un sovraccarico.
Se solo si desidera raccogliere i dati, eseguire alcune elaborazioni di luce, e non sta cercando di fare molto di più con il modulo del kernel, systemtap può essere una buona alternativa alla scrittura di un modulo del kernel: https://sourceware.org/systemtap/documentation.html
Maggiori dettagli su Kprobes: https://www.kernel.org/doc/Documentation/kprobes.txt
sched_switch()
systemtap esempio: https://sourceware.org/systemtap/examples/profiling/sched_switch.stp
- 1. Kernel Module Programmazione
- 2. Qual è il significato dei numeri nel nome dei processi di flush per i nuovi kernel Linux?
- 3. Ascolto di eventi come l'aggiunta di nuovi elementi in JavaScript
- 4. Distinzione tra processi e thread in Linux
- 5. Acquisizione del pid del processo utente durante la scrittura di Kernel Module Linux
- 6. Numero massimo di processi in linux
- 7. Processi Windows nel kernel vs sistema
- 8. Copertura del codice kernel Linux - GCOV
- 9. Quale contesto viene chiamata una funzione in Linux Kernel
- 10. Cronometraggio nel kernel Linux 2.6
- 11. Kernel Linux Invalidazione voci TLB
- 12. su typecheck nel kernel linux
- 13. kernel Linux makescile cscope target
- 14. Simboli del kernel Linux esportati
- 15. Ottenere inode dal percorso in Linux Kernel
- 16. In che modo linux-kernel legge il file proc/pid?
- 17. Come configurare il kernel Linux in Buildroot?
- 18. Ottenere le informazioni di debug del kernel di Linux dopo l'arresto del kernel
- 19. stdlib.h alternativa nel kernel di Linux?
- 20. Chiamate di sistema Linux e modalità kernel
- 21. Debug di Windows Kernel da Linux
- 22. Chiamata di funzione nel kernel linux
- 23. L'invio di pacchetti UDP dal Linux Kernel
- 24. Stile di codifica del kernel Linux
- 25. intesa macro container_of nel kernel di Linux
- 26. Come abilitare il debug dinamico nel kernel di Linux?
- 27. Pool di memoria nel driver Kernel per più processi
- 28. Modulo Kernel Linux (* .ko) compatibilità tra i kernel
- 29. come comunicare i programmi - kernel kernel kernel monolitico kernel exo
- 30. Discussioni/Confronto dei processi su Linux/Windows
"In user-land, sarebbe facile da configurare un ascoltatore directory/proc" In realtà no, non funziona. Ma [il/proc connector fa] (http://stackoverflow.com/questions/6075013/linux-detect-launching-of-programs). – duskwuff