.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2001 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getcontext 3 "20 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME getcontext, setcontext \- obține sau stabilește contextul utilizatorului .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBint getcontext(ucontext_t *\fP\fIucp\fP\fB);\fP \fBint setcontext(const ucontext_t *\fP\fIucp\fP\fB);\fP .fi .SH DESCRIERE Într\-un mediu de tip System V, există cele două tipuri \fImcontext_t\fP și \fIucontext_t\fP definite în \fI\fP și cele patru funcții \fBgetcontext\fP(), \fBsetcontext\fP(), \fBmakecontext\fP(3) și \fBswapcontext\fP(3) care permit comutarea contextului la nivel de utilizator între mai multe fire de control în cadrul unui proces. .PP Tipul \fImcontext_t\fP depinde de mașină și este opac. Tipul \fIucontext_t\fP este o structură care are cel puțin următoarele câmpuri: .PP .in +4n .EX typedef struct ucontext_t { struct ucontext_t *uc_link; sigset_t uc_sigmask; stack_t uc_stack; mcontext_t uc_mcontext; ... } ucontext_t; .EE .in .PP cu \fIsigset_t\fP și \fIstack_t\fP definite în \fI\fP. Aici \fIuc_link\fP indică contextul care va fi reluat atunci când contextul curent se termină (în cazul în care contextul curent a fost creat folosind \fBmakecontext\fP(3)), \fIuc_sigmask\fP este setul de semnale blocate în acest context (a se vedea \fBsigprocmask\fP(2)), \fIuc_stack\fP este stiva utilizată de acest context (a se vedea \fBsigaltstack\fP(2)), iar \fIuc_mcontext\fP este reprezentarea specifică mașinii a contextului salvat, care include registrele mașinii firului apelant. .PP Funcția \fBgetcontext\fP() inițializează structura indicată de \fIucp\fP în contextul activ curent. .PP Funcția \fBsetcontext\fP() restabilește contextul utilizatorului indicat de \fIucp\fP. Un apel reușit nu returnează. Contextul ar fi trebuit să fie obținut printr\-un apel la \fBgetcontext\fP() sau \fBmakecontext\fP(3), sau primit ca al treilea argument al unui gestionar de semnal (a se vedea discuția despre fanionul \fBSA_SIGINFO\fP din \fBsigaction\fP(2)). .PP Dacă contextul a fost obținut printr\-un apel la \fBgetcontext\fP(), execuția programului continuă ca și cum acest apel tocmai a fost returnat. .PP În cazul în care contextul a fost obținut printr\-un apel la \fBmakecontext\fP(3), execuția programului continuă printr\-un apel la funcția \fIfunc\fP specificată ca al doilea argument al apelului la \fBmakecontext\fP(3). La întoarcerea funcției \fIfunc\fP, continuăm cu membrul \fIuc_link\fP al structurii \fIucp\fP specificat ca prim argument al acelui apel la \fBmakecontext\fP(3). Atunci când acest membru este NULL, firul de execuție iese. .PP 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”. .SH "VALOAREA RETURNATĂ" În caz de succes, \fBgetcontext\fP() returnează 0, iar \fBsetcontext\fP() nu returnează. În caz de eroare, ambele returnează \-1 și setează \fIerrno\fP pentru a indica eroarea. .SH ERORI\-IEȘIRE Nu sunt definite. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBgetcontext\fP(), \fBsetcontext\fP() T} Siguranța firelor MT\-Safe race:ucp .TE .sp 1 .SH STANDARDE Niciunul. .SH ISTORIC SUSv2, POSIX.1\-2001. .PP 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. .SH NOTE Cea mai veche întruchipare a acestui mecanism a fost mecanismul \fBsetjmp\fP(3)/ \fBlongjmp\fP(3). Deoarece acesta nu definește gestionarea contextului semnalului, următoarea etapă a fost perechea \fBsigsetjmp\fP(3)/ \fBsiglongjmp\fP(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 \fBgetcontext\fP() provine din primul apel sau prin intermediul unui apel \fBsetcontext\fP(). Utilizatorul trebuie să inventeze propriul dispozitiv de evidență contabilă, iar o variabilă de registru nu este suficientă, deoarece registrele sunt restaurate. .PP 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 \fBlongjmp\fP(3): nu este definit ce se întâmplă cu contextele. Utilizați în schimb \fBsiglongjmp\fP(3) sau \fBsetcontext\fP(). .SH "CONSULTAȚI ȘI" \fBsigaction\fP(2), \fBsigaltstack\fP(2), \fBsigprocmask\fP(2), \fBlongjmp\fP(3), \fBmakecontext\fP(3), \fBsigsetjmp\fP(3), \fBsignal\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .