Wie bekomme ich die PID des Benutzerprozesses, der die file_operation.read
Routine meines Kernmoduls ausgelöst hat (d. H. Welcher Prozess liest /dev/mydev
)?Benutzer Prozess pid beim Schreiben Linux Kernel Modul
Antwort
Wenn Ihre Lesefunktion ausgeführt wird, geschieht dies im Zusammenhang mit dem Prozess, der den Systemaufruf ausgelöst hat. Sie sollten daher current
, d. H. current->pid
, verwenden können.
Heutzutage haben wir einige Hilfsfunktionen in sched.h definiert. Im Fall von PID können Sie verwenden:
pid = task_pid_nr(current);
, um die aktuelle Aufgabe pid.
Hier ist der Kommentar aus include/linux/sched.h
ab v3.8.
die Helfer die Aufgabe der verschiedenen PIDs zu erhalten, wie sie aus verschiedenen Namensräumen
- task_xid_nr() zu sehen sind: global-ID, das heißt der von dem init-Namensraum gesehen id;
- task_xid_vnr(): virtuelle ID, d. H. Die ID aus dem PID-Namespace des aktuellen gesehen.
- task_xid_nr_ns(): id von der angegebenen ns gesehen;
- set_task_vxid(): weist einer Aufgabe eine virtuelle ID zu;
siehe auch pid_nr() usw. in include/linux/pid.h
Auf einem Kernel 2.6.39 Arm zu bauen, wenn current->pid
nicht funktioniert, dann es von getan werden kann:
pid_nr(get_task_pid(current, PIDTYPE_PID))
Die PIDTYPE_PID
kann durch PIDTYPE_PGID
oder PIDTYPE_SID
ersetzt werden. Die Header-Quelle ist bei include/linux/pid.h
, wie Yasushi darauf hinwies.
Welche der Ansätze funktioniert, hängt davon ab, welche Header-Dateien der Code verwendet.
- 1. Nicht im Kernel-Speicher schreiben über Linux Kernel-Modul (Ubuntu)
- 2. Linux-Kernel-Modul Programmierung: Makefile
- 3. Profiling eines Prozesses über seine PID Linux Kernel Programmierung
- 4. Linux-Kernel-Modul Kompilierung
- 5. Linux-Kernel-Modul
- 6. Kernel-Stack für Linux-Prozess
- 7. Linux-Kernel-Modul Kompilierung fehlgeschlagen
- 8. Wann sollte ich ein Linux-Kernel-Modul schreiben?
- 9. Compile Linux-Kernel-Modul (lincan)
- 10. Makefile für Linux Kernel Modul?
- 11. Linux-Kernel-Modul automatisch laden
- 12. Widersprüchliche Header-Dateien in Linux Kernel-Modul
- 13. Linux Kernel-Modul: Verzögerte Workqueue machen den Kernel abgestürzt
- 14. pro-Task-Datenstruktur in Linux-Kernel-Modul
- 15. String-Manipulation im Linux-Kernel-Modul
- 16. Kompilieren Linux Kernel (2.6) Modul einschließlich Nicht-Kernel-Header
- 17. wie Linux-Kernel-Modul mit -ggdb Flagge
- 18. Wie ein Linux-Kernel-Modul zu programmieren?
- 19. Inter-Modul-Kommunikation im Linux-Kernel
- 20. I2C schreiben Bestätigung Polling in Linux Kernel
- 21. Linux Fork: pid wiederverwenden
- 22. FEHLER BEIM SCHREIBEN PID installieren Zookeeper installieren
- 23. Monitor Linux-Prozess von Benutzer oder Name
- 24. Auf neue Prozesse im Linux-Kernel-Modul warten
- 25. Linux Kernel-Pufferspeicher ist Null
- 26. glib und linux kernel
- 27. Kann ich strtok() in einem Linux Kernel Modul verwenden?
- 28. Konfiguration Linux Kernel
- 29. Wie bestimmt Linux die nächste PID?
- 30. Kompilierfehler: Kernel-Modul
was ist aktuell? Lesen erhält keinen aktuellen Wert als Argument ... ssize_t (* lesen) (struct file *, char __user *, size_t, loff_t *); – 0x90
@ 0x90 Es ist ein Makro. – cnicutar
http://kernelnewbies.org/FAQ/current, richtig? – 0x90