home | help
I386_GET_LDT(2) 	       System Calls Manual		 I386_GET_LDT(2)

NAME
     i386_get_ldt,  i386_set_ldt -- manage i386 per-process Local Descriptor Ta-
     ble entries

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <machine/segments.h>
     #include <machine/sysarch.h>

     int
     i386_get_ldt(int start_sel, union descriptor *descs, int num_sels);

     int
     i386_set_ldt(int start_sel, union descriptor *descs, int num_sels);

DESCRIPTION
     The i386_get_ldt() system call will return the  list  of  i386  descriptors
     that the process has in its LDT.  The i386_set_ldt() system call will set a
     list of i386 descriptors for the current process in its LDT.  Both routines
     accept  a	starting selector number start_sel, an array of memory that will
     contain the descriptors to be set or returned descs, and the number of  en-
     tries to set or return num_sels.

     The  argument descs can be either segment_descriptor or gate_descriptor and
     are defined in <i386/segments.h>.	These structures are defined by the  ar-
     chitecture  as  disjoint  bit-fields, so care must be taken in constructing
     them.

     If start_sel is LDT_AUTO_ALLOC, num_sels is 1 and the descriptor pointed to
     by descs is legal, then i386_set_ldt() will allocate a descriptor	and  re-
     turn its selector number.

     If   num_descs  is  1,  start_sels  is  valid,  and  descs  is  NULL,  then
     i386_set_ldt() will free that descriptor (making it available to be reallo-
     cated again later).

     If num_descs is 0, start_sels is 0 and descs is NULL  then,  as  a  special
     case, i386_set_ldt() will free all descriptors.

RETURN VALUES
     Upon  successful  completion, i386_get_ldt() returns the number of descrip-
     tors currently in the LDT.  The  i386_set_ldt()  system  call  returns  the
     first selector set.  In the case when a descriptor is allocated by the ker-
     nel, its number will be returned.	Otherwise, a value of -1 is returned and
     the global variable errno is set to indicate the error.

ERRORS
     The i386_get_ldt() and i386_set_ldt() system calls will fail if:

     [EINVAL]		An   inappropriate  value  was	used  for  start_sel  or
			num_sels.

     [EACCES]		The caller attempted to use a descriptor that would cir-
			cumvent protection or cause a failure.

SEE ALSO
     i386 Microprocessor Programmer's Reference Manual, Intel

WARNING
     You can really hose your process using this.

FreeBSD 6.0		       September 20, 1993		 I386_GET_LDT(2)

home | help