table of contents
I386_GET_LDT(2) | System Calls Manual | I386_GET_LDT(2) |
NAME¶
i386_get_ldt
, i386_set_ldt
—
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¶
Thei386_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,
start_sel specifies the index of the selector in the LDT
at which to begin and descs points to an array of
num_sels descriptors to be set or returned.
Each entry in the descs array can be either
a segment_descriptor or gate_descriptor and are defined in
<i386/segments.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 reallocated 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 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¶
Thei386_get_ldt
() and
i386_set_ldt
() system calls will fail if:
SEE ALSO¶
i386 Microprocessor Programmer's Reference Manual, IntelWARNING¶
You can really hose your process using this.October 14, 2006 | Linux 4.19.0-10-amd64 |