xref: /netbsd/lib/libarch/i386/i386_get_ldt.2 (revision 6550d01e)
1.\" Copyright (c) 1980, 1991 Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"     from: @(#)fork.2	6.5 (Berkeley) 3/10/91
29.\"	$NetBSD: i386_get_ldt.2,v 1.13 2003/08/07 16:42:00 agc Exp $
30.\"
31.Dd September 20, 1993
32.Dt I386_GET_LDT 2 i386
33.Os
34.Sh NAME
35.Nm i386_get_ldt ,
36.Nm i386_set_ldt
37.Nd manage i386 per-process Local Descriptor Table entries
38.Sh LIBRARY
39.Lb libi386
40.Sh SYNOPSIS
41.In sys/types.h
42.In machine/segments.h
43.In machine/sysarch.h
44.Ft int
45.Fn i386_get_ldt "int start_sel" "union descriptor *descs" "int num_sels"
46.Ft int
47.Fn i386_set_ldt "int start_sel" "union descriptor *descs" "int num_sels"
48.Sh DESCRIPTION
49.Fn i386_get_ldt
50will return the list of i386 descriptors that the process has in its
51LDT.
52.Fn i386_set_ldt
53will set a list of i386 descriptors for the current process in its
54LDT.
55Both routines accept a starting selector number
56.Fa start_sel
57, an array of memory that
58will contain the descriptors to be set or returned
59.Fa descs
60, and the number of entries to set or return
61.Fa num_sels .
62.Pp
63The argument
64.Fa descs
65can be either segment_descriptor or gate_descriptor and are defined in
66.Fd \*[Lt]i386/segments.h\*[Gt] .
67These structures are defined by the architecture
68as disjoint bit-fields, so care must be taken in constructing them.
69.Sh RETURN VALUES
70Upon successful completion,
71.Fn i386_get_ldt
72returns the number of descriptors currently in the LDT.
73.Fn i386_set_ldt
74returns the first selector set.
75Otherwise, a value of \-1 is returned and the global
76variable
77.Va errno
78is set to indicate the error.
79.Sh ERRORS
80.Fn i386_get_ldt
81and
82.Fn i386_set_ldt
83will fail if:
84.Bl -tag -width [EINVAL]
85.It Bq Er EINVAL
86An inappropriate parameter was used for
87.Fa start_sel
88or
89.Fa num_sels .
90.It Bq Er EACCES
91The caller attempted to use a descriptor that would
92circumvent protection or cause a failure.
93.El
94.Sh REFERENCES
95i386 Microprocessor Programmer's Reference Manual, Intel
96.Sh WARNING
97You can really hose your process using this.
98