1. NOM▲
modify_ldt - Lire/écrire la LDT
2. SYNOPSIS ▲
#include <sys/types.h>
int
modify_ldt
(
int
func, void
*
ptr, unsigned
long
bytecount);
Remarque : il n'existe pas de fonction glibc autour de cet appel système ; consultez NOTES.
3. DESCRIPTION ▲
modify_ldt() lit ou écrit la table des descripteurs locaux (Local Descriptor Table) du processus. La LDT est une table de gestion mémoire par processus utilisée par les processeurs i386. Pour plus d'informations sur cette table, se reporter au manuel Intel 386.
Quand func vaut 0, modify_ldt() lit la LDT et la place dans la mémoire pointée par ptr. Le nombre d'octets lus est le minimum entre bytecount et la vraie taille de la LDT.
Quand func vaut 1, modify_ldt() modifie une entrée de la LDT. ptr pointe sur une structure user_desc et bytecount doit être égal à la taille de cette structure. La structure user_desc est déclarée dans <asm/ldt.h> comme suit :
struct
user_desc {
unsigned
int
entry_number;
unsigned
long
base_addr;
unsigned
int
limit;
unsigned
int
seg_32bit:1
;
unsigned
int
contents:2
;
unsigned
int
read_exec_only:1
;
unsigned
int
limit_in_pages:1
;
unsigned
int
seg_not_present:1
;
unsigned
int
useable:1
;
}
;
Sous Linux 2.4 et les versions précédentes, cette structure s'appelait modify_ldt_ldt_s.
4. VALEUR RENVOYÉE ▲
S'il réussit modify_ldt() renvoie soit le nombre d'octets lus soit 0 (écriture). En cas d'échec -1 est renvoyé et errno contient le code d'erreur.
5. ERREURS ▲
- EFAULT
ptr pointe en dehors de l'espace d'adressage accessible. - EINVAL
ptr est nul, ou func vaut 1 et bytecount n'est pas égal à la taille de la structure modify_ldt_ldt_s, ou func vaut 1 et la nouvelle entrée de LDT a des valeurs illégales. - ENOSYS
func n'est ni 0 ni 1.
6. CONFORMITÉ ▲
Cet appel système est spécifique à Linux et ne doit pas être employé dans des programmes destinés à être portables.
7. NOTES ▲
La glibc ne fournit pas de fonction autour de cet appel système ; utilisez syscall(2) pour l'appeler.
8. VOIR AUSSI ▲
vm86(2)
9. COLOPHON ▲
Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.
10. TRADUCTION ▲
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».