i386_get_ldti386_set_ldt
- manage i386 per-process Local Descriptor Table entries
LIBRARY
Lb libc
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
returns a list of the i386 descriptors in the current process'
LDT.
The
i386_set_ldt ();
system call
sets a list of i386 descriptors in the current process'
LDT.
For both routines,
Fa start_sel
specifies the index of the selector in the LDT at which to begin and
Fa descs
points to an array of
Fa num_sels
descriptors to be set or returned.
Each entry in the
Fa descs
array can be either a segment_descriptor or gate_descriptor and are defined in
In i386/segments.h .
These structures are defined by the architecture
as disjoint bit-fields, so care must be taken in constructing them.
If
Fa start_sel
is
LDT_AUTO_ALLOC
Fa num_sels
is 1 and the descriptor pointed to by
Fa descs
is legal, then
i386_set_ldt ();
will allocate a descriptor and return its
selector number.
If
Fa num_descs
is 1,
Fa start_sels
is valid, and
Fa descs
is NULL, then
i386_set_ldt ();
will free that descriptor
(making it available to be reallocated again later).
If
Fa num_descs
is 0,
Fa start_sels
is 0 and
Fa 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 descriptors currently in the LDT.
The
i386_set_ldt ();
system call
returns the first selector set on success.
If the kernel allocated a descriptor in the LDT,
the allocated index is 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:
Bq Er EINVAL
An inappropriate value was used for
Fa start_sel
or
Fa num_sels .
Bq Er EACCES
The caller attempted to use a descriptor that would
circumvent protection or cause a failure.