Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       sigreturn,  rt_sigreturn,  rt_sigreturn - returnează de la gestionarul de semnal și curăță
       cadrul stivei

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       int sigreturn(...);

DESCRIERE

       Dacă nucleul Linux determină că un semnal deblocat este în așteptare pentru un  semnal  de
       proces,  atunci, la următoarea tranziție înapoi la modul utilizator în acel proces (de ex.
       de exemplu, la revenirea de la un apel de sistem sau atunci când procesul este reprogramat
       pe  CPU),  acesta creează un nou cadru pe stiva din spațiul de utilizator în care salvează
       diferite elemente ale contextului procesului (cuvânt de stare al  procesorului,  registre,
       semnal mască și parametrii stivei de semnale).

       De  asemenea,  nucleul  face  în  așa  fel  încât,  în  timpul  tranziției înapoi la modul
       utilizator, să fie apelat gestionarul de semnal și, la  revenirea  de  la  gestionarul  de
       semnal,  controlul  să treacă la o bucată de cod din spațiul utilizatorului, numită în mod
       obișnuit „trambulina de semnal”.  La rândul său, codul de trambulină  de  semnal  apelează
       sigreturn().

       Acest  apel  sigreturn()  anulează  tot  ceea  ce s-a făcut—modificarea măștii de semnal a
       procesului, comutarea stivei de semnale  (a  se  vedea  sigaltstack(2))——pentru  a  invoca
       gestionarul  de semnal.  Utilizând informațiile care au fost salvate anterior pe stiva din
       spațiul utilizatorului, sigreturn() restabilește masca de  semnal  a  procesului,  schimbă
       stivele  și  restabilește  contextul  procesului  (fanioanele  și registrele procesorului,
       inclusiv indicatorul de stivă și indicatorul de instrucțiuni), astfel încât  procesul  își
       reia execuția în punctul în care a fost întrerupt de semnal.

VALOAREA RETURNATĂ

       sigreturn() nu returnează niciodată.

STANDARDE

       Multe  sisteme  de  tip  UNIX au un apel de sistem sigreturn() sau aproape echivalent.  Cu
       toate  acestea,  acest  apel  nu  este  specificat  în  POSIX,   iar   detaliile   privind
       comportamentul său variază de la un sistem la altul.

NOTE

       sigreturn()  există  doar  pentru  a permite implementarea gestionarilor de semnal.  Nu ar
       trebui niciodată să  fie  apelat  direct.   (Într-adevăr,  un  simplu  sigretreturn()  din
       biblioteca  GNU C returnează pur și simplu -1, cu errno configurată la ENOSYS).  Detaliile
       privind argumentele (dacă există) transmise către sigretreturn()  variază  în  funcție  de
       arhitectură.   (Pe  unele  arhitecturi, cum ar fi x86-64, sigretreturn() nu acceptă niciun
       argument, deoarece toate informațiile de care are nevoie sunt disponibile în cadrul stivei
       care a fost creată anterior de către nucleu pe stiva din spațiul utilizatorului).

       Mai  demult,  sistemele UNIX plasau codul de trambulină de semnal pe stiva utilizatorului.
       În prezent, paginile din stiva utilizatorului sunt protejate astfel încât  să  nu  permită
       executarea  de  cod.   Astfel, pe sistemele Linux contemporane, în funcție de arhitectură,
       codul de trambulină de semnal se află fie în vdso(7), fie în biblioteca C.  În  acest  din
       urmă  caz, funcția de învăluire sigaction(2) a bibliotecii C informează nucleul cu privire
       la locația codului de trambulină prin plasarea  adresei  sale  în  câmpul  sa_restorer  al
       structurii sigaction și activează fanionul SA_RESTORER în câmpul sa_flags.

       Informațiile  salvate despre contextul procesului sunt plasate într-o structură ucontext_t
       (a se vedea <sys/ucontext.h>).  Această structură este vizibilă în cadrul gestionarului de
       semnal  ca  al  treilea  argument al unui gestionar stabilit prin sigaction(2) cu fanionul
       SA_SIGINFO.

       Pe alte sisteme UNIX, funcționarea trambulinei de semnal diferă  puțin.   În  special,  pe
       unele  sisteme,  la  revenirea  la  modul  utilizator,  nucleul  transmite controlul către
       trambulină (mai degrabă decât către gestionarul de semnal), iar codul trambulinei apelează
       gestionarul de semnal (și apoi apelează sigreturn() odată ce gestionarul returnează).

   Diferențe între biblioteca C și nucleu
       Apelul  de sistem original din Linux a fost numit sigreturn().  Cu toate acestea, odată cu
       adăugarea semnalelor în timp real în Linux 2.2, a fost adăugat  un  nou  apel  de  sistem,
       rt_sigreturn(),  pentru  a  suporta  un  tip sigset_t extins.  Biblioteca GNU C ne ascunde
       aceste detalii, utilizând  în  mod  transparent  rt_sigreturn()  atunci  când  nucleul  îl
       furnizează.

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea  în  limba  română  a  acestui  manual  a  fost  creată  de Remus-Gabriel Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară cu
       privire la condiții privind drepturile de autor.  NU se asumă Nicio RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui  manual,  vă  rugăm  să  trimiteți  un  e-mail  la
       ⟨translation-team-ro@lists.sourceforge.net⟩.