AMD64_GET_LDT(2)      OpenBSD Programmer's Manual (AMD64)     AMD64_GET_LDT(2)

NAME
     amd64_get_ldt, amd64_set_ldt - manage amd64 per-process Local Descriptor
     Table entries

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

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

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

DESCRIPTION
     amd64_get_ldt() will return the list of amd64 descriptors that the pro-
     cess has in its LDT.  amd64_set_ldt() will set a list of amd64 descrip-
     tors for the current process in its LDT.  Both routines accept a starting
     selector number start_sel, an array of memory that will contain the de-
     scriptors to be set or returned descs, and the number of entries to set
     or return num_sels.

     The argument descs can be either segment_descriptor or gate_descriptor,
     as defined in <amd64/segments.h>.  These structures are defined by the
     architecture as disjoint bit-fields, so care must be taken in construct-
     ing them.

     Before this API can be used the functionality has to be enabled using the
     machdep.userldt sysctl(8) variable.

     Note: Code using the amd64_get_ldt() and amd64_set_ldt() functions must
     be compiled using -lamd64.

RETURN VALUES
     Upon successful completion, amd64_get_ldt() returns the number of de-
     scriptors currently in the LDT.  amd64_set_ldt() returns the first selec-
     tor set.  Otherwise, a value of -1 is returned and the global variable
     errno is set to indicate the error.

ERRORS
     amd64_get_ldt() and amd64_set_ldt() will fail if:

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

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

REFERENCES
     Intel, AMD64 Microprocessor Programmer's Reference Manual.

WARNING
     You can really hose your process using this.

OpenBSD 3.5                   September 20, 1993                             1
