PR_SET_SYSCALL_USER_DISPATCH(2const) PR_SET_SYSCALL_USER_DISPATCH(2const) BEZEICHNUNG PR_SET_SYSCALL_USER_DISPATCH - Setzt den Systemaufruf-Benutzer-Verteilungsmechanismus fur den aufrufenden Thread BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include /* Definition der PR_*-Konstanten */ #include int prctl(PR_SET_SYSCALL_USER_DISPATCH, long Aktion, ); int prctl(PR_SET_SYSCALL_USER_DISPATCH, PR_SYS_DISPATCH_ON, unsigned long Versatz, unsigned long Grosse, int8_t *Schalter); int prctl(PR_SET_SYSCALL_USER_DISPATCH, PR_SYS_DISPATCH_OFF, 0L, 0L, 0L); BESCHREIBUNG Konfiguriert den Systemaufruf-Benutzer-Verteilungsmechanismus fur den aufrufenden Thread. Dieser Mechanismus ermoglicht es einer Anwendung, ausgewahlt Systemaufrufe abzufangen, so dass diese in der Anwendung selbst bearbeitet werden konnen. Die Abfangung hat die Form eines auf den Thread gerichteten Signals SIGSYS, der an den Thread ausgeliefert wird, wenn er einen Systemaufruf ausfuhrt. Falls der Systemaufruf abgefangen wird, wird er nicht vom Kernel ausgefuhrt. PR_SYS_DISPATCH_ON Aktiviert diesen Mechanismus. Sobald er aktiviert ist, werden weitere Systemaufrufe ausgewahlt abgefangen, abhangig von der vom Anwendungsraum bereitgestellten Steuervariable. In diesem Fall identifizieren Versatz bzw. Grosse den Versatz und die Grosse einer einzelnen, fortlaufenden Speicherregion im Prozess-Adressraum, aus dem die Ausfuhrung von Systemaufrufen immer erlaubt ist, unabhangig von der Steuervariablen. (Normalerweise wurde dieser Bereich den Speicherbereich enthalten, in dem sich die C-Bibliothek befindet.) Schalter zeigt auf eine Variable, die ein schneller Schalter zum Erlauben/Blockieren von Systemaufrufausfuhrungen ist, ohne den Extraaufwand, der von Ausfuhrung eines weiteren Systemaufrufs benotigt wird, um die Systemaufruf-Benutzerverteilung neu zu konfigurieren. Diese Steuervariable kann entweder auf SYSCALL_DISPATCH_FILTER_BLOCK gesetzt werden, um die Ausfuhrung von Systemaufrufen zu blockieren oder auf SYSCALL_DISPATCH_FILTER_ALLOW, um temporar deren Ausfuhrung zu erlauben. Diese Variable wird vom Kernel bei jedem Eintritt in Systemaufrufe uberpruft und jeder unerwartete Wert wird zu diesem Zeitpunkt einen nicht abfangbaren SIGSYS auslosen, der die Anwendung beendet. Wenn ein Systemaufruf abgefangen wurde, sendet der Kernel ein an den auslosenden Thread gerichtetes Signal SIGSYS. In der Struktur siginfo_t werden verschiedene, dem Signal zugeordnete Felder gesetzt (Informationen hierzu in sigaction(2)): o si_signo wird SIGSYS enthalten. o si_call_addr wird die Adresse der Systemaufrufanweisung enthalten. o si_syscall und si_arch werden anzeigen, welcher Systemaufruf versucht wurde. o si_code wird SYS_USER_DISPATCH enthalten. o si_errno wird auf 0 gesetzt. Der Programmzahler verhalt sich so, als ob der Aufruf stattfand (d.h. der Programmzahler wird nicht auf die Systemaufrufanweisung zeigen). Wenn der Signal-Handler in den Kernel zuruckkehrt, wird der Systemaufruf sofort abgeschlossen und zu dem aufrufenden Thread zuruckgekehrt, ohne dass er tatsachlich ausgefuhrt wird. Falls notwendig (d.h. bei der Emulierung eines Systemaufrufs im Benutzerraum) sollte der Signal-Handler den Ruckgabewert des Systemaufrufs auf einen vernunftigen Wert setzen, indem er den im Argument ucontext des Signal-Handlers gespeicherten Registerkontext verandert. Weitere Informationen hierzu finden Sie in sigaction(2), sigreturn(2) und getcontext(3). PR_SYS_DISPATCH_OFF Der Systemaufruf-Benutzer-Verteilungsmechanismus ist fur diesen Thread deaktiviert. Diese Einstellung wird nicht uber fork(2), clone(2) oder execve(2) hinweg erhalten. RUCKGABEWERT Bei Erfolg wird 0 zuruckgegeben. Bei einem Fehler wird -1 zuruckgegeben und errno gesetzt, um den Fehler anzuzeigen. FEHLER EFAULT Schalter ist eine ungultige Adresse. EINVAL Aktion ist PR_SYS_DISPATCH_ON und der angegebene Speicherbereich ist ausserhalb des Adressraums des Prozesses. EINVAL Aktion ist ungultig. STANDARDS Linux. Nur X86. GESCHICHTE Linux 5.11 (X86). SIEHE AUCH prctl(2) Weitere Informationen finden Sie in der Kernelquelldatei Documentation/ admin-guide/syscall-user-dispatch.rst. UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer: . Linux man-pages 6.17 8. Februar 2026 PR_SET_SYSCALL_USER_DISPATCH(2const)