Provided by: manpages-nl-dev_4.21.0-2_all 

NAAM
sigreturn, rt_sigreturn - keer terug uit signaal verwerker en maak de stapel schoon
BIBLIOTHEEK
Standard C bibliotheek (libc, -lc)
SAMENVATTING
int sigreturn(...);
BESCHRIJVING
Als de Linux kernel detecteert dat een niet-geblokkeerd signaal in afwachting is van een proces, dan, zal
bij de volgende overgang terug naar de gebruikers mode van dat process (b.v. bij terugkeer van een
systeem aanroep of wanneer het proces werd verplaatst naar de CPU), het een nieuw frame aanmaken op de
stapel van de gebruiker-ruimte waarin het diverse onderdelen van de proces context bewaard (processor
status woord, registers, signaal masker en signaal instellingen).
De kernel zorgt er ook voor dat bij de terugkeer naar de gebruikers mode, dat de signaal verwerker wordt
aangeroepen, en dat, bij terugkeer uit de verwerker, de controle wordt doorgegeven naar een onderdeel van
de gebruikers-ruimte code, veelal aangeduid als "de signaal trampoline". De signaal trampoline code op
zijn beurt roept signreturn() aan.
Deze sigreturn() aanroep maakt alles ongedaan dat was gedaan—veranderen van het proces signaal masker,
veranderen van signaal stapel (zie signmalstack(2))—om de signaal verwerker aan te roepen. Gebruik makend
van de informatie die eerder werd bewaard op de stack van de gebruikers-ruimte herstelt sigreturn() het
masker van het signaal van het proces, schakelt tussen stapels, en herstelt de processor context
(processor vlaggen en registers, inclusief de stapel- en instructie wijzers), zodat het proces de
executie hervat vanaf het punt waar het werd onderbroken door het signaal .
EIND WAARDE
sigreturn() keert nooit terug.
VOLDOET AAN
Veel UNIX-achtige systemen hebben een sigreturn() systeem aanroep of een bijna equivalent. Echter, deze
aanroep is niet gespecificeerd in POSIX en details van zijn gedrag variëren van systeem tot systeem.
OPMERKINGEN
sigreturn() bestaat alleen om de implementatie van signaal verwerkers mogelijk te maken. Hij moet nooit
direct aangeroepen worden. (Inderdaad, een eenvoudige sigreturn() omwikkel functie in de GNU
C-bibliotheek retourneert eenvoudigweg -1, met errno gezet op ENOSYS.) Details over de argumenten (als
er al een is) meegegeven aan sigreturn() variëren afhankelijk van de architectuur. (Op sommige
architecturen, zoals de x86-64 heeft sigreturn() geen argument, omdat alle benodigde informatie
beschikbaar is op de stapel die eerder werd gecreëerd door de kernel op de stapel in de
gebruikers-ruimte.
Ooit plaatsten UNIX systemen de code van de signaal trampoline op de gebruiker stapel. Tegenwoordig
worden pagina´s van de gebruiker stapel beschermd tegen het uitvoeren van code. Op hedendaagse Linux
systemen leeft daarom, afhankelijk van de architectuur, de signaal trampoline code ofwel in de vdso(7) of
in de C-bibliotheek. In het laatste geval informeert de bibliotheek sigaction(2) omwikkel functie de
kernel over de locatie van de trampoline code door het plaatsen van het adres in het sa_restorer veld van
de sigaction structure, en zet de SA_RESTORER vlag in het sa_flags veld.
De opgeslagen proces context informatie wordt geplaatst in een ucontext_t structure (zie
<sys/ucontext.h>). Deze structure is zichtbaar in de signaal verwerker als het derde argument van de
verwerker zoals gevestigd door sigaction(2) met de SA_SIGINFO vlag.
Op een aantal andere UNIX systemen, verschilt de werking van de signaal trampoline een beetje. In het
bijzonder, op sommige systemen zal de kernel bij de terugkeer uit gebruiker mode, de controle doorgeven
naar de trampoline (in plaats van de signaal verwerker), en de trampoline code roept de signaal verwerker
aan (en roept vervolgens sigreturn() aan wanneer de verwerker terugkeert).
C library/kernel verschillen
De originele Linux systeem aanroep heette sigreturn(). Echter, na de toevoeging van echt-tijd signalen in
Linux 2.2, werd een nieuwe systeem aanroep, rt_sigreturn() toegevoegd om een vergroot sigset_t type te
ondersteunen. De GNU C bibliotheek verbergt deze details voor ons, daarbij transparant gebruikmakend van
rt_sigreturn() wanneer de kernel hierin voorziet.
ZIE OOK
kill(2), restart_syscall(2), sigaltstack(2), signal(2), getcontext(3), signal(7), vdso(7)
VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario
Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de
Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-
dutch@lists.debian.org.
Linux man-pagina's 6.03 5 februari 2023 sigreturn(2)