Provided by: manpages-ja-dev_0.5.0.0.20161015+dfsg-1_all
名前
modify_ldt - ldt を設定または取得する
書式
#include <sys/types.h> int modify_ldt(int func, void *ptr, unsigned long bytecount); 注: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
説明
modify_ldt() はプロセスのローカルディスクリプターテーブル (local descriptor table; ldt) を読み書きする。 ldt は i386 プロセッサで使用されるプロセスごとのメモリー管理テーブルであ る。 このテーブルに関してのより詳しい情報は Intel 386 processor handbook を 参照すること。 func が 0 ならば、 modify_ldt() は ldt を ptr が指しているメモリーに読み込む。 読み込むバ イト数は実際の ldt のサイズか bytecount より小さい方である。 func が 1 ならば、 modify_ldt() は ldt エントリーの一つを変更する。 ptr は user_desc 構造 体を指し、 bytecount はこの構造体の大きさに等しくなければならない。 user_desc 構造体は <asm/ldt.h> で以下のように定義されている: 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; }; Linux 2.4 以前では、この構造体は modify_ldt_ldt_s という名前であった。
返り値
成功した場合は、 modify_ldt() は (読み込みの場合は) 実際に読み込んだバイト数、 または (書 き込みの場合は) 0 を返す。 失敗した場合は modify_ldt() は -1 を返し、 errno をエラーを示 す値に設定する。
エラー
EFAULT ptr がアドレス空間の外を指している。 EINVAL ptr が 0 である、 または func が 1 で bytecount が modify_ldt_ldt_s 構造体のサイズ と等しくないか、 func が 1 で新しい ldt エントリーが無効な値である。 ENOSYS func が 0 でも 1 でもない。
準拠
このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。
注意
glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使って呼び 出すこと。
関連項目
vm86(2)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。