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

NUME

       getcontext, setcontext - obține sau stabilește contextul utilizatorului

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <ucontext.h>

       int getcontext(ucontext_t *ucp);
       int setcontext(const ucontext_t *ucp);

DESCRIERE

       Într-un  mediu de tip System V, există cele două tipuri mcontext_t și ucontext_t definite în <ucontext.h>
       și cele patru funcții getcontext(), setcontext(), makecontext(3) și swapcontext(3) care permit  comutarea
       contextului la nivel de utilizator între mai multe fire de control în cadrul unui proces.

       Tipul  mcontext_t  depinde  de  mașină și este opac. Tipul ucontext_t este o structură care are cel puțin
       următoarele câmpuri:

           typedef struct ucontext_t {
               struct ucontext_t *uc_link;
               sigset_t          uc_sigmask;
               stack_t           uc_stack;
               mcontext_t        uc_mcontext;
               ...
           } ucontext_t;

       cu sigset_t și stack_t definite în <signal.h>. Aici uc_link indică contextul care  va  fi  reluat  atunci
       când   contextul   curent  se  termină  (în  cazul  în  care  contextul  curent  a  fost  creat  folosind
       makecontext(3)), uc_sigmask este setul de semnale blocate în acest context (a se  vedea  sigprocmask(2)),
       uc_stack  este  stiva  utilizată  de  acest  context  (a  se  vedea sigaltstack(2)), iar uc_mcontext este
       reprezentarea specifică mașinii a contextului salvat, care include registrele mașinii firului apelant.

       Funcția getcontext() inițializează structura indicată de ucp în contextul activ curent.

       Funcția setcontext() restabilește contextul utilizatorului indicat de ucp. Un apel reușit nu  returnează.
       Contextul  ar  fi trebuit să fie obținut printr-un apel la getcontext() sau makecontext(3), sau primit ca
       al treilea argument al unui gestionar de semnal (a se  vedea  discuția  despre  fanionul  SA_SIGINFO  din
       sigaction(2)).

       Dacă  contextul  a  fost  obținut printr-un apel la getcontext(), execuția programului continuă ca și cum
       acest apel tocmai a fost returnat.

       În cazul în care contextul a fost obținut printr-un apel la makecontext(3), execuția programului continuă
       printr-un apel la funcția func specificată ca al  doilea  argument  al  apelului  la  makecontext(3).  La
       întoarcerea  funcției func, continuăm cu membrul uc_link al structurii ucp specificat ca prim argument al
       acelui apel la makecontext(3). Atunci când acest membru este NULL, firul de execuție iese.

       Dacă contextul a fost obținut printr-un apel la un gestionar de  semnal,  atunci  vechiul  text  standard
       spune că „execuția programului continuă cu instrucțiunea de program care urmează instrucțiunii întrerupte
       de  semnal”.  Cu  toate  acestea, această propoziție a fost eliminată în SUSv2, iar verdictul actual este
       „rezultatul este nespecificat”.

VALOAREA RETURNATĂ

       În caz de succes, getcontext() returnează 0, iar setcontext() nu returnează. În  caz  de  eroare,  ambele
       returnează -1 și setează errno pentru a indica eroarea.

ERORI-IEȘIRE

       Nu sunt definite.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌────────────────────────────────────────────────────────────────┬───────────────────┬──────────────────┐
       │ InterfațăAtributValoare          │
       ├────────────────────────────────────────────────────────────────┼───────────────────┼──────────────────┤
       │ getcontext(), setcontext()                                     │ Siguranța firelor │ MT-Safe race:ucp │
       └────────────────────────────────────────────────────────────────┴───────────────────┴──────────────────┘

STANDARDE

       Niciunul.

ISTORIC

       SUSv2, POSIX.1-2001.

       POSIX.1-2008  elimină aceste funcții, invocând probleme de portabilitate și recomandând ca aplicațiile să
       fie rescrise pentru a utiliza în schimb fire POSIX.

NOTE

       Cea mai veche întruchipare a acestui mecanism a fost mecanismul setjmp(3)/ longjmp(3). Deoarece acesta nu
       definește  gestionarea  contextului  semnalului,  următoarea  etapă   a   fost   perechea   sigsetjmp(3)/
       siglongjmp(3).  Mecanismul  actual  oferă mult mai mult control. Pe de altă parte, nu există o modalitate
       ușoară de a detecta dacă o returnare de la getcontext() provine din primul apel sau prin intermediul unui
       apel setcontext(). Utilizatorul trebuie să inventeze propriul dispozitiv de  evidență  contabilă,  iar  o
       variabilă de registru nu este suficientă, deoarece registrele sunt restaurate.

       Atunci  când apare un semnal, contextul curent al utilizatorului este salvat și un nou context este creat
       de către nucleu pentru gestionarul de semnal.  Nu  părăsiți  gestionarul  folosind  longjmp(3):  nu  este
       definit ce se întâmplă cu contextele. Utilizați în schimb siglongjmp(3) sau setcontext().

CONSULTAȚI ȘI

       sigaction(2), sigaltstack(2), sigprocmask(2), longjmp(3), makecontext(3), sigsetjmp(3), signal(7)

TRADUCERE

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

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                      getcontext(3)