September 20, 1993 I386_GET_LDT 2 i386

### NAME

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

### LIBRARY

i386 Architecture Library (libi386, -li386)

### SYNOPSIS

```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

i386_get_ldt(``) will return the list of i386 descriptors that the process has in its LDT. i386_set_ldt(``) 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 entries 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 architecture as disjoint bit-fields, so care must be taken in constructing them.

### RETURN VALUES

Upon successful completion, i386_get_ldt(``) returns the number of descriptors currently in the LDT. i386_set_ldt(``) returns the first selector set. Otherwise, a value of -1 is returned and the global variable errno is set to indicate the error.

### ERRORS

i386_get_ldt(``) and i386_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

i386 Microprocessor Programmer's Reference Manual, Intel

### WARNING

You can really hose your process using this.