SINOPSIS
#include <linux/ldt.h>#include <linux/unistd.h>
_syscall3(int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount)
int modify_ldt(int func, void *ptr, unsigned long bytecount);
DESCRIPCIÓN
modify_ldt lee o escribe la tabla local de descriptores (ldt) para un proceso. La ldt es una tabla de gestión de memoria por proceso empleada por el procesador i386. Para más información sobre esta tabla, consulte un manual del procesador 386 de Intel.Cuando func es 0, modify_ldt lee la ldt de la zona de memoria apuntada por ptr. El número de bytes leídos es el menor de bytecount y el tamaño actual de la ldt.
Cuando func es 1, modify_ldt modifica una entrada de ldt. ptr apunta a una estructura modify_ldt_ldt_s y bytecount debe igualar el tamaño de esta estructura.
VALOR DEVUELTO
En caso de éxito, modify_ldt devuelve o el número real de bytes leídos (cuando lee) ó 0 (cuando escribe). Si falla, modify_ldt devuelve -1 y da un valor apropiado a errno.ERRORES
- ENOSYS
- func no es ni 0 ni 1.
- EINVAL
- ptr es 0, o func es 1 y bytecount no es igual al tamaño de la estructura modify_ldt_ldt_s, o func es 1 y la nueva entrada de ldt tiene valores no válidos.
- EFAULT
- ptr apunta afuera del espacio de direcciones.