.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH arch_prctl 2 "17 Mayo 2025" "Páginas de Manual de Linux 6.15" .SH NOMBRE arch_prctl \- fija el estado de un hilo para una arquitectura específica .SH BIBLIOTECA Biblioteca Estándar C (\fIlibc\fP,\ \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP /* Definición de las constantes \fBARCH_*\fP */ \fB#include \fP /* Definición de las constantes \fBSYS_*\fP */ \fB#include \fP .P \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 .P \fINota\fP: glibc no proporciona un contenedor para \fBarch_prctl\fP() por lo que se requiere el uso de \fBsyscall\fP(2). .SH DESCRIPCIÓN \fBarch_prctl\fP() establece el estado del proceso o hilo específico de la arquitectura. \fIop\fP selecciona una operación y le pasa el argumento \fIaddr\fP; \fIaddr\fP se interpreta como un \fIentero largo\fP para las operaciones «set», o como un \fIentero largo\ *\fP para las operaciones «get». .P Las subfunciones para la arquitectura x86\-64 y x86 son: .TP \fBARCH_SET_CPUID\fP (desde Linux 4.12) .\" commit e9ea1e7f53b852147cbd568b0568c7ad97ec21a3 Habilita (\fIaddr != 0\fP) o deshabilita (\fIaddr == 0\fP) la instrucción \fIcpuid\fP para el hilo que la llama. La instrucción está habilitada por defecto. Si estuviese deshabilitada, cualquier ejecución de una instrucción \fIcpuid\fP generará una señal \fBSIGSEGV\fP. Esta función se puede usar para emular resultados de \fIcpuid\fP que difieren de los que habría producido el hardware subyacente (por ejemplo, en una configuración de paravirtualización). .IP La configuración de \fBARCH_SET_CPUID\fP se conserva en \fBfork\fP(2) y \fBclone\fP(2), pero se restablece al valor predeterminado (es decir, \fIcpuid\fP habilitado) en \fBexecve\fP(2). .TP \fBARCH_GET_CPUID\fP (desde Linux 4.12) Retorna la configuración del indicador manipulado por \fBARCH_SET_CPUID\fP como resultado de la llamada al sistema (1 para habilitado, 0 para deshabilitado). \fIaddr\fP se ignora. .TP Las subfunciones para la arquitectura x86\-64 son: .TP \fBARCH_SET_FS\fP Establece la base de 64 bits para el registro \fIFS\fP a \fIaddr\fP. .TP \fBARCH_GET_FS\fP Devuelve el valor de base de 64 bits para el registro \fIFS\fP del hilo invocante en la variable \fIunsigned long\fP apuntada por \fIaddr\fP. .TP \fBARCH_SET_GS\fP Establece la base de 64 bits para el registro \fIGS\fP a \fIaddr\fP. .TP \fBARCH_GET_GS\fP Devuelve el valor de base 64 bits para el registro \fIGS\fP del hilo actual en la variable \fIunsigned long\fP apuntada por el parámetro \fIaddr\fP. .SH "VALOR DEVUELTO" En caso de éxito \fBarch_prctl\fP() devuelve cero. En caso de error se devuelve \-1, y \fIerrno\fP se define para indicar el tipo de error. .SH ERRORES .TP \fBEFAULT\fP \fIaddr\fP apunta a una dirección no asignada o que está fuera del espacio de direcciones del proceso. .TP \fBEINVAL\fP \fIop\fP no es una operación válida. .TP \fBENODEV\fP Se solicitó \fBARCH_SET_CPUID\fP, pero el hardware subyacente no incluye soporte para error de CPUID. .TP \fBEPERM\fP .\" .SH AUTHOR .\" Man page written by Andi Kleen. \fIaddr\fP está fuera del espacio de direcciones. .SH ESTÁNDARES Linux/x86\-64. .SH NOTAS En la actualidad \fBarch_prctl\fP() es soportada solamente por la plataforma Linux/x86\-64 para programas de 64 bits. .P La base de 64 bits cambia cuando se carga un nuevo selector de segmento de 32 bits. .P \fBARCH_SET_GS\fP está deshabilitado en algunos núcleos. .P Los cambios de contexto para bases de segmentos de 64 bits son bastante costosos. Como optimización, siempre que se use una dirección base TLS de 32 bits, \fBarch_prctl\fP() puede usar una entrada TLS real como si se hubiera llamado a \fBset_thread_area\fP(2), en lugar de manipular directamente el registro base del segmento. La memoria en los primeros 2 GB del espacio de direcciones se puede asignar usando \fBmmap\fP(2) con el indicador \fBMAP_32BIT\fP. .P Debido a la optimización mencionada, no es recomendable usar \fBarch_prctl\fP() y \fBset_thread_area\fP(2) en el mismo hilo, ya que pueden sobrescribirse mutuamente las entradas TLS. .P Es posible que la biblioteca de subprocesos ya esté usando \fIFS\fP. Los programas que usan \fBARCH_SET_FS\fP directamente tienen una alta probabilidad de fallar. .SH "VÉASE TAMBIÉN" \fBmmap\fP(2), \fBmodify_ldt\fP(2), \fBprctl\fP(2), \fBset_thread_area\fP(2) .P Manual del Programador de AMD X86\-64 .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .