Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       sigreturn, rt_sigreturn - Rückkehr vom Signal-Handler und Aufräumen des Stacks

ÜBERSICHT

       int sigreturn(…);

BESCHREIBUNG

       If the Linux kernel determines that an unblocked signal is pending for a process, then, at
       the next transition back to user mode in that process (e.g., upon  return  from  a  system
       call  or  when  the  process  is  rescheduled onto the CPU), it creates a new frame on the
       user-space stack where it saves various pieces of process context (processor status  word,
       registers, signal mask, and signal stack settings).

       Der  Kernel  sorgt  auch  dafür,  dass  während  des  Übergangs  in  den  Benutzerraum der
       Signal-Handler aufgerufen wird und dass nach der Rückkehr aus dem Handler die Steuerung an
       ein  Codestück  im Benutzerraum abgegeben wird, der häufig »Signaltrampolin« genannt wird.
       Der Signaltrampolincode ruft dann wiederum sigreturn() auf.

       Dieser Aufruf von sigreturn() macht alle Aktionen für den Aufruf des Signal Handlers – die
       Änderung   der   Signalmaske   des   Prozesses,   Umschalten   der   Signal-Stacks  (siehe
       sigaltstack(2)) – rückgängig. Mittels der Informationen, die früher auf dem Benutzer-Stack
       gespeichert  wurden, stellt sigreturn() die Signalmaske des Prozesses wieder her, schaltet
       die Stacks um und stellt den Prozesskontext (Prozessorschalter und -register, darunter den
       Stack-Zeiger und den Instruktions-Zeiger) wieder her, so dass die Ausführung des Prozesses
       an dem Punkt fortgesetzt wird, wo er von dem Signal unterbrochen wurde.

RÜCKGABEWERT

       sigreturn() kehrt nie zurück.

KONFORM ZU

       Viele UNIX-artige Systeme haben einen Systemaufruf sigreturn() oder etwas nah  verwandtes.
       Allerdings  wird  dieser  Aufruf  nicht  in  POSIX  spezifiziert  und  die  Details seines
       Verhaltens unterscheiden sich von System zu System.

ANMERKUNGEN

       sigreturn()  exists only to allow the implementation of signal handlers. It  should  never
       be  called  directly.  (Indeed,  a  simple sigreturn() wrapper in the GNU C library simply
       returns -1, with errno set to ENOSYS.)  Details  of  the  arguments  (if  any)  passed  to
       sigreturn()  vary  depending  on the architecture. (On some architectures, such as x86-64,
       sigreturn()  takes no arguments,  since  all  of  the  information  that  it  requires  is
       available  in  the stack frame that was previously created by the kernel on the user-space
       stack.)

       Früher platzierten UNIX-Systeme den Signaltrampolincode in dem  Benutzerstack.  Heutzutage
       sind  die  Seiten  des Benutzer-Stacks so geschützt, dass Code-Ausführung verweigert wird.
       Daher befindet sich der Signaltrampolincode auf aktuellen Linux-Systemen, abhängig von der
       Architektur,  entweder  im vdso(7) oder in der C-Bibliothek. In letzterem Falle informiert
       die  Wrapperfunktion  sigaction(2)  der  C-Bibliothek  den  Kernel  über   den   Ort   des
       Trampolincodes,  indem  es  dessen  Adresse in dem Feld sa_restorer der Struktur sigaction
       ablegt und den Schalter SA_RESTORER im Feld sa_flags setzt.

       Die gespeicherte  Prozesskontextinformation  wird  in  einer  Struktur  ucontext_t  (siehe
       <sys/ucontext.h>)  abgelegt.  Diese Struktur ist innerhalb des Signal-Handlers als drittes
       Argument eines Handlers, der über  sigaction(2)  mit  dem  Schalter  SA_SIGINFO  etabliert
       wurde, sichtbar.

       Auf  einigen  anderen UNIX-Systemen unterscheidet sich die Aktion des Signaltrampolins ein
       bisschen. Insbesondere übergibt der Kernel auf einigen  Systemen  die  Steuerung  bei  der
       Rückkehr  in  den Benutzerraummodus an das Trampolin (statt an den Signal-Handler) und der
       Trampolincode ruft den Signal-Handler auf (und  ruft  dann  sigreturn()  auf,  sobald  der
       Handler zurückkehrt).

   Unterschiede C-Bibliothek/Kernel
       Der  ursprüngliche  Systemaufruf hieß sigreturn(). Mit der Hinzunahme von Echtzeitsignalen
       in Linux 2.2 wurde allerdings ein  neuer  Systemaufruf  rt_sigreturn()  zur  Unterstützung
       eines vergrößerten Typs sigset_t hinzugefügt. Die GNU-C-Bibliothek versteckt diese Details
       und setzt rt_sigreturn() transparent ein, wenn der Kernel dies bereitstellt.

SIEHE AUCH

       kill(2), restart_syscall(2), sigaltstack(2), signal(2), getcontext(3), signal(7), vdso(7)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.15  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde  von  René  Tschirley  <gremlin@cs.tu-
       berlin.de>,     Martin    Schulze    <joey@infodrom.org>,    Martin    Eberhard    Schauer
       <Martin.E.Schauer@gmx.de>,   Mario   Blättermann   <mario.blaettermann@gmail.com>,   Helge
       Kreutzmann <debian@helgefjell.de> und Dr. Tobias Quathamer <toddy@debian.org> 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 <debian-l10n-german@lists.debian.org>.