table of contents
ARCH_PRCTL(2) | Manual del Programador de Linux | ARCH_PRCTL(2) |
NOMBRE¶
arch_prctl - Fija el estado de un hilo para una arquitectura específica.
SINOPSIS¶
#include <asm/prctl.h>
#include <sys/prctl.h>
int arch_prctl(int code, unsigned long addr)
DESCRIPCIÓN¶
La función arch_prctl fija el estado de un hilo o proceso para una arquitectura específica. code escoge una subfunción y le pasa el argumento addr.
Las subfunciones para la arquitectura x86-64 son:
- ARCH_SET_FS
- Establece la base de 64 bits para el registro FS a addr.
- ARCH_GET_FS
- Devuelve el valor de base de 64 bits para el registro FS del hilo actual en la variable unsigned long apuntada por el parámetro address
- ARCH_SET_GS
- Establece la base de 64 bits para el registro GS a addr.
- ARCH_GET_GS
- Devuelve el valor de base 64 bits para el registro GS del hilo actual en la variable unsigned long apuntada por el parámetro address.
OBSERVACIONES¶
En la actualidad arch_prctl es soportada solamente por la plataforma Linux/x86-64 para programas de 64 bits.
La base de 64 bits cambia cuando se carga un nuevo selector de segmento de 32 bits.
ARCH_SET_GS está deshabilitado en algunos núcleos.
Los cambios de contexto para las bases de segmento de 64 bits son bastante costosos. Una alternativa más rápida sería fijar una base de 32 bits usando un selector de segmento configurando un LDT con modify_ldt(2) o usando la llamada al sistema set_thread_area(2) en un núcleo 2.5. arch_prctl solamente se necesita cuando se quieren establecer bases mayores de 4GB. La memoria en los primeros 2GB del espacio de direcciones puede ser asignada usando mmap(2) con la opción MAP_32BIT.
No existe el prototipo de arch_prctl en glibc 2.2. Es tarea del programador declararlo por sí mismo. Este inconveniente será subsanado en versiones futuras de glibc.
FS puede estar ya usado por la biblioteca de hilos.
ERRORES¶
AUTOR¶
Página de manual escrita por Andi Kleen.
CONFORME A¶
arch_prctl es una extensión de Linux/x86-64 y no debería emplearse en programas que se pretenden que sean portables.
VÉASE TAMBIÉN¶
mmap(2), modify_ldt(2), prctl(2), set_thread_area(2)
Manual del Programador de AMD X86-64
2 febrero 2003 | Linux 2.4.20 |