.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2003 Andi Kleen .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH arch_prctl 2 "30 martie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME arch_prctl \- stabilește starea firului de execuție specifică arhitecturii .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP /* Definiția constantelor \fBARCH_*\fP */ \fB#include \fP /* Definiția constantelor \fBSYS_*\fP */ \fB#include \fP .PP \fBint syscall(SYS_arch_prctl, int \fP\fIcode\fP\fB, unsigned long \fP\fIaddr\fP\fB);\fP \fBint syscall(SYS_arch_prctl, int \fP\fIcode\fP\fB, unsigned long *\fP\fIaddr\fP\fB);\fP .fi .PP \fINotă\fP: glibc nu oferă nici o funcție de învăluire pentru \fBarch_prctl\fP(), fiind necesară utilizarea \fBsyscall\fP(2). .SH DESCRIERE \fBarch_prctl\fP() stabilește starea procesului sau a firului de execuție specifică arhitecturii. \fIcod\fP selectează o subfuncție și îi transmite argumentul \fIaddr\fP; \fIaddr\fP este interpretat fie ca un \fIunsigned long\fP pentru operațiile de „set” (stabilire), fie ca un \fIunsigned long\ *\fP, pentru operațiile de „get” (obținere). .PP Subfuncțiile atât pentru x86 cât și pentru x86\-64 sunt: .TP \fBARCH_SET_CPUID\fP (începând cu Linux 4.12) .\" commit e9ea1e7f53b852147cbd568b0568c7ad97ec21a3 Activează (\fIaddr != 0\fP) sau dezactivează (\fIaddr == 0\fP) instrucțiunea \fIcpuid\fP pentru firul apelant. Instrucțiunea este activată în mod implicit. Dacă este dezactivată, orice execuție a unei instrucțiuni \fIcpuid\fP va genera în schimb un semnal \fBSIGSEGV\fP. Această caracteristică poate fi utilizată pentru a emula rezultatele \fIcpuid\fP care diferă de ceea ce ar fi produs hardware\-ul subiacent (de exemplu, într\-un mediu de paravirtualizare). .IP Valoarea parametrului \fBARCH_SET_CPUID\fP este păstrată în \fBfork\fP(2) și \fBclone\fP(2), dar este restabilită la valoarea implicită (adică \fIcpuid\fP activat) în \fBexecve\fP(2). .TP \fBARCH_GET_CPUID\fP (începând cu Linux 4.12) Returnează valoarea fanionului manipulat de \fBARCH_SET_CPUID\fP ca rezultat al apelului de sistem (1 pentru activat, 0 pentru dezactivat). Parametrul \fIaddr\fP este ignorat. .TP Subfuncțiile numai pentru x86\-64 sunt: .TP \fBARCH_SET_FS\fP Stabilește baza pe 64 de biți pentru registrul \fIFS\fP la \fIaddr\fP. .TP \fBARCH_GET_FS\fP Returnează valoarea de bază pe 64 de biți pentru registrul \fIFS\fP al firului apelant în \fIunsigned long\fP indicat de \fIaddr\fP. .TP \fBARCH_SET_GS\fP Stabilește baza pe 64 de biți pentru registrul \fIGS\fP la \fIaddr\fP. .TP \fBARCH_GET_GS\fP Returnează valoarea de bază pe 64 de biți pentru registrul \fIGS\fP al firului apelant în \fIunsigned long\fP indicat de \fIaddr\fP. .SH "VALOAREA RETURNATĂ" În caz de succes, \fBarch_prctl\fP() returnează 0; în caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEFAULT\fP \fIaddr\fP indică o adresă nealocată sau se află în afara spațiului de adrese al procesului. .TP \fBEINVAL\fP \fIcode\fP nu este o subcomandă validă. .TP \fBENODEV\fP A fost solicitat \fBARCH_SET_CPUID\fP, dar hardware\-ul subiacent nu acceptă erorile CPUID. .TP \fBEPERM\fP .\" .SH AUTHOR .\" Man page written by Andi Kleen. \fIaddr\fP se află în afara spațiului de adrese al procesului. .SH STANDARDE Linux/x86\-64. .SH NOTE \fBarch_prctl\fP() este acceptat numai pe Linux/x86\-64 pentru programele pe 64 de biți în prezent. .PP Baza pe 64 de biți se modifică atunci când se încarcă un nou selector de segmente pe 32 de biți. .PP \fBARCH_SET_GS\fP este dezactivat în unele nuclee. .PP Comutările de context pentru bazele de segmente pe 64 de biți sunt destul de costisitoare. Ca o optimizare, dacă se utilizează o adresă de bază TLS pe 32 de biți, \fBarch_prctl\fP() poate utiliza o intrare TLS reală ca și cum ar fi fost apelat \fBset_thread_area\fP(2), în loc să manipuleze direct registrul bazei segmentului. Memoria din primii 2\ Go de spațiu de adresare poate fi alocată prin utilizarea \fBmmap\fP(2) cu fanionul \fBMAP_32BIT\fP. .PP Din cauza optimizării menționate mai sus, utilizarea \fBarch_prctl\fP() și \fBset_thread_area\fP(2) în același fir de execuție este periculoasă, deoarece acestea pot suprascrie intrările TLS ale celuilalt. .PP Este posibil ca \fIFS\fP să fie deja utilizat de biblioteca de fire de execuție. Programele care utilizează direct \fBARCH_SET_FS\fP sunt foarte susceptibile de a se bloca. .SH "CONSULTAȚI ȘI" \fBmmap\fP(2), \fBmodify_ldt\fP(2), \fBprctl\fP(2), \fBset_thread_area\fP(2) .PP AMD X86\-64 Programmer's manual .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 .