Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

i386_get_ldt(2) [freebsd man page]

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 <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, 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 reallo- cated 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
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
October 14, 2006 BSD

Check Out this Related Man Page

CLOSE(2)						      BSD System Calls Manual							  CLOSE(2)

NAME
close -- delete a descriptor LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <unistd.h> int close(int d); DESCRIPTION
The close() system call deletes a descriptor from the per-process object reference table. If this is the last reference to the underlying object, the object will be deactivated. For example, on the last close of a file the current seek pointer associated with the file is lost; on the last close of a socket(2) associated naming information and queued data are discarded; on the last close of a file holding an advisory lock the lock is released (see flock(2)). When a process exits, all associated descriptors are freed, but since there is a limit on active descriptors per processes, the close() sys- tem call is useful when a large quantity of file descriptors are being handled. When a process calls fork(2), all descriptors for the new child process reference the same objects as they did in the parent before the fork(). If a new process is then to be run using execve(2), the process would normally inherit these descriptors. Most of the descriptors can be rearranged with dup2(2) or deleted with close() before the execve() is attempted, but if some of these descriptors will still be needed if the execve() fails, it is necessary to arrange for them to be closed only if the execve() succeeds. For this reason, the system call fcntl(d, F_SETFD, 1); is provided, which arranges that a descriptor ``d'' will be closed after a successful execve(); the system call fcntl(d, F_SETFD, 0); restores the default, which is to not close descriptor ``d''. RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error. ERRORS
close() will fail if: [EBADF] d is not an active descriptor. [EINTR] An interrupt was received. SEE ALSO
accept(2), execve(2), fcntl(2), flock(2), open(2), pipe(2), socket(2), socketpair(2) STANDARDS
The close() function conforms to ISO/IEC 9945-1:1990 (``POSIX.1''). BSD
April 19, 1994 BSD
Man Page