Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       restart_syscall - Neustart eines Systemaufrufs nach einer Unterbrechung durch ein Stopp-Signal

ÜBERSICHT

       long restart_syscall(void);

       Hinweis: Es gibt keinen Glibc-Wrapper für diesen Systemaufruf; siehe ANMERKUNGEN.

BESCHREIBUNG

       Der  Systemaufruf  restart_syscall()  wird  zum  Neustart  bestimmter Systemaufrufe verwandt, nachdem ein
       Prozess, der durch ein Stopp-Signal (z.B. SIGSTOP oder SIGTSTP) gestoppt wurde später nach Empfang  eines
       Signals  SIGCONT  wiederaufgenommen  wird.  Dieser  Systemaufruf  ist  nur zur Kernel-internen Verwendung
       entwickelt worden.

       restart_syscall()  wird  nur  zum  Neustart  solcher  Systemaufrufe  verwandt,  die  beim  Neustart  ihre
       Zeit-bezogenen  Parameter anpassen sollen – konkret poll(2) (seit Linux 2.6.24), nanosleep(2) (seit Linux
       2.6), clock_nanosleep(2) (seit Linux 2.6) und futex(2), wenn mit  den  Aktionen  FUTEX_WAIT  (seit  Linux
       2.6.22)   und   FUTEX_WAIT_BITSET   (seit   Linux   2.6.31)  eingesetzt.  restart_syscall()  startet  die
       unterbrochenen Systemaufrufe mit einem Zeitargument neu, das geeignet  angepasst  ist,  um  die  Zeit  zu
       berücksichtigen,  die  bereits  abgelaufen ist (einschließlich der Zeit, die der Prozess durch ein Signal
       unterbrochen war). Ohne den Mechanismus restart_syscall() würde der  Neustart  dieser  Systemaufrufe  die
       bereits abgelaufene Zeit nicht korrekt ableiten, wenn der Prozess mit der Ausführung fortfahren würde.

RÜCKGABEWERT

       Der Rückgabewert von restart_syscall() ist der Rückgabewert des jeweiligen neugestarteten Systemaufrufs.

FEHLER

       errno wird gemäß des Fehlers des jeweils durch restart_syscall() neugestarten Systemaufrufs gesetzt.

STANDARDS

       Linux.

GESCHICHTE

       Linux 2.6.

ANMERKUNGEN

       Für  diesen  Systemaufruf gibt es keinen Glibc-Wrapper, da er nur zur Verwendung durch den Kernel gedacht
       ist und niemals von Anwendungen aufgerufen werden sollte.

       Der Kernel verwendet restart_syscall() um  sicherzustellen,  dass  die  Zeit,  die  der  Prozess  in  dem
       gestoppten    Zustand    verbrachte,    gegen    das    im    ursprünglichen   Systemaufruf   festgelegte
       Zeitüberschreitungsintervall zählt, wenn ein Systemaufruf neu gestartet wird, nachdem ein  Prozess  durch
       ein  Signal  gestoppt  und  dann  durch  SIGCONT  wiederaufgenommen  wurde.  Für  Systemaufrufe,  die ein
       Zeitüberschreitungsargument akzeptieren und sich automatisch nach  einem  Stopp-Signal  mit  SIGCONT  neu
       starten,  bei  denen aber der Mechanismus restart_syscall() nicht eingebaut ist, wird nach Wiederaufnahme
       der Prozessausführung die Zeit,  die  der  Prozess  in  dem  Stoppzustand  verbrachte,  nicht  gegen  den
       Zeitüberschreitungswert  gezählt.  Bekannte Beispiele für Systemaufrufe, die unter diesem Problem leiden,
       sind ppoll(2), select(2) und pselect(2).

       Aus dem Anwendungsraum ist die  Aktion  von  restart_syscall()  größtenteils  unsichtbar:  gegenüber  dem
       Prozess,  der den neuzustartenden Systemaufruf durchführte, erscheint es so, als ob der Systemaufruf ganz
       normal ausgeführt wurde und zurückkehrte.

SIEHE AUCH

       sigaction(2), sigreturn(2), signal(7)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                restart_syscall(2)