.\" Copyright (c) 1995 Michael Chastain (mec@duracef.shout.net), 22 July 1995.
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" .
.\" %%%LICENSE_END
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
.\" all rights reserved.
.\" Translated 1997-02-23, HANATAKA Shinya
.\" Updated & Modified 2005-02-24, Yuichi SATO
.\" Updated 2007-06-18, Akihiro MOTOKI , LDP v2.57
.\"
.TH MODIFY_LDT 2 2012\-07\-13 Linux "Linux Programmer's Manual"
.SH 名前
modify_ldt \- ldt を設定または取得する
.SH 書式
.nf
\fB#include \fP
.sp
\fBint modify_ldt(int \fP\fIfunc\fP\fB, void *\fP\fIptr\fP\fB, unsigned long \fP\fIbytecount\fP\fB);\fP
.fi
\fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
.SH 説明
\fBmodify_ldt\fP() はプロセスのローカルディスクリプターテーブル (local descriptor table; ldt)
を読み書きする。 ldt は i386 プロセッサで使用されるプロセスごとのメモリー管理テーブルである。 このテーブルに関してのより詳しい情報は
Intel 386 processor handbook を 参照すること。
.PP
\fIfunc\fP が 0 ならば、 \fBmodify_ldt\fP() は ldt を \fIptr\fP が指しているメモリーに読み込む。
読み込むバイト数は実際の ldt のサイズか \fIbytecount\fP より小さい方である。
.PP
.\"
.\" FIXME Should this page say something about func == 2 and func == 0x11?
.\" In Linux 2.4, func == 2 returned "the default ldt"
.\" In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
.\" Linux 2.4 and 2.6 implement an operation for func == 0x11
\fIfunc\fP が 1 ならば、 \fBmodify_ldt\fP() は ldt エントリーの一つを変更する。 \fIptr\fP は \fIuser_desc\fP
構造体を指し、 \fIbytecount\fP はこの構造体の大きさに等しくなければならない。
\fIuser_desc\fP 構造体は \fI\fP で以下のように定義されている:
.in +4n
.nf
struct user_desc {
unsigned int entry_number;
unsigned long base_addr;
unsigned int limit;
unsigned int seg_32bit:1;
unsigned int contents:2;
unsigned int read_exec_only:1;
unsigned int limit_in_pages:1;
unsigned int seg_not_present:1;
unsigned int useable:1;
};
.fi
.in
.PP
.\" .PP
.\" The ldt is specific for the calling process. Any attempts to change
.\" the ldt to include the address space of another process or the kernel
.\" will result in a segmentation violation when trying to access the memory
.\" outside of the process address space. The memory protection is enforced
.\" at the paging layer.
Linux 2.4 以前では、この構造体は \fImodify_ldt_ldt_s\fP という名前であった。
.SH 返り値
成功した場合は、 \fBmodify_ldt\fP() は (読み込みの場合は) 実際に読み込んだバイト数、 または (書き込みの場合は) 0 を返す。
失敗した場合は \fBmodify_ldt\fP() は \-1 を返し、 \fIerrno\fP をエラーを示す値に設定する。
.SH エラー
.TP
\fBEFAULT\fP
\fIptr\fP がアドレス空間の外を指している。
.TP
\fBEINVAL\fP
\fIptr\fP が 0 である、 または \fIfunc\fP が 1 で \fIbytecount\fP が \fImodify_ldt_ldt_s\fP
構造体のサイズと等しくないか、 \fIfunc\fP が 1 で新しい ldt エントリーが無効な値である。
.TP
\fBENOSYS\fP
\fIfunc\fP が 0 でも 1 でもない。
.SH 準拠
このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。
.SH 注意
glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使って呼び出すこと。
.SH 関連項目
\fBvm86\fP(2)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。