sys_modify_ltd  [arch/i386/kernel/ldt.c]


Reads or writes the Local Descriptor Table (LDT) for a process.

*this information wasn't verified and may be incorrect*

Arguments

eax 123
ebx Specifies whether a read (0), write (0x11), read_default (2), or write_oldmode (1) operation is required.
ecx In case of read operation this argument is a pointer to a buffer which will receive the LDT data.
In case of write_oldmode operation this argument is a pointer to um_dup_user_desc structure which will be used to modify a LDT entry.

um_dup_user_desc structure defined as follows:
struc um_dup_user_desc
{
.entry_number rd 1
.base_addr    rd 1
.limit        rd 1
.bitfield     rd 1
             ; seg_32bit :1
             ; contents :2
             ; read_exec_only :1
             ; limit_in_pages :1
             ; seg_not_present :1
             ; useable :1
}
edx In case of read operation this argument specifies the size of the buffer pointed by ecx.
In case of write_oldmode operation this argument should specify the size of um_dup_user_desc structure.

Return values

If the system call succeeds the return value is either the actual number of bytes read (for reading) or 0 (for writing).
If the system call fails the return value is one of the following errno values:

-EFAULT ecx points outside the address space.
-EINVAL ecx is 0, or ebx is 1 and edx is not equal to the size of the structure um_dup_user_desc, or ebx is 1 and the new ldt entry has invalid values.
-ENOSYS ebx is neither 0 nor 1.

Remarks

n/a

Compatibility

n/a