Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       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 エントリの一つを変更する。 ptruser_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 で bytecountmodify_ldt_ldt_s 構造体のサイズ
              と等しくないか、 func が 1 で新しい ldt エントリが無効な値である。

       ENOSYS func が 0 でも 1 でもない。

準拠

       このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。

注意

       glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2)   を使って呼び
       出すこと。

関連項目

       vm86(2)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。