iOS Reference Library Apple Developer
Search

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



I386_GET_LDT(2)             BSD System Calls Manual            I386_GET_LDT(2)

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

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <architecture/i386/table.h>
     #include <i386/user_ldt.h>

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

     int
     i386_set_ldt(int start_sel, union ldt_entry *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 rou-tines routines
     tines 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 entries to set or return num_sels.

     The argument descs can be either code_desc_t, data_desc_t or call_gate_t
     and are defined in <architecture/i386/desc.h>.  These structures are
     defined by the architecture 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
     return 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 real-located reallocated
     located 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 descriptors
     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
     kernel, 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
                        circumvent protection or cause a failure.

SEE ALSO
     i386 Microprocessor Programmer's Reference Manual, Intel

WARNING
     You can really hose your process using this.

BSD                           September 20, 1993                           BSD
Did this document help you? Yes It's good, but... Not helpful...