modify_ldt - get or set ldt


       #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);


       modify_ldt  reads  or  writes  the  local descriptor table
       (ldt) for a process.  The ldt is a per-process memory man­
       agement table used by the i386 processor.  For more infor­
       mation on this table, see an Intel 386 processor handbook.

       When  func  is 0, modify_ldt reads the ldt into the memory
       pointed to by ptr.   The  number  of  bytes  read  is  the
       smaller of bytecount and the actual size of the ldt.

       When  func  is  1, modify_ldt modifies one ldt entry.  ptr
       points to a modify_ldt_ldt_s structure and bytecount  must
       equal the size of this structure.


       On success, modify_ldt returns either the actual number of
       bytes read (for reading) or 0 (for writing).  On  failure,
       modify_ldt returns -1 and sets errno.


       ENOSYS func is neither 0 nor 1.

       EINVAL ptr  is  0, or func is 1 and bytecount is not equal
              to the size of the structure  modify_ldt_ldt_s,  or
              func is 1 and the new ldt entry has illegal values.

       EFAULT ptr points outside the address space.


       This call in Linux-specfic and should not be used in  pro­
       grams intended to be portable.