I386_GET_LDT(2)

名称
i386_get_ldt, i386_set_ldt - i386 プロセスごとのローカル記述子テーブルエントリを管理する

ライブラリ
libc

書式
<machine/segments.h> <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)

解説
i386_get_ldt() はプロセスの LDT の中にある i386 記述子のリストを返します。 i386_set_ldt() は現在のプロセスのための i386 記述子の リストを、そのプロセスの LDT に設定します。 両方のルーチンは、開始するセレクタ番号の start_sel と、設定する記述子の入った、または記述子が返されるメモリの配列の descs および設定または返されるエントリ数の num_sels を受け取ります。

引数 descs としては segment_descriptor または gate_descriptor <i386/segments.h>. <i386/segments.h> 内に定義されています。これらの構成要素は、アーキテクチャに対応して ばらばらになったビットフィールドとして定義 されているので、それらを組み立てる際には注意を払う必要があります。

これらの関数を使用するには、カーネルの設定ファイル中で “options USER_LDT” を指定していなければならないことに注意してください。

戻り値
正常に完了した場合、 i386_get_ldt() は現在 LDT 内にある記述子の数を返します。 i386_set_ldt() は最初のセレクタセットを返します。そうでない場合は -1 が返され、 エラーを示すためにグローバル変数 errno が設定されます。

エラー
i386_get_ldt() と i386_set_ldt() は次の場合に失敗します。

[EINVAL]
    start_sel または num_sels について不適切なパラメータが使用されました。

[EACCES]
    呼び出し側が保護機構を欺くかまたは障害を起こす記述子を使おうとしました。

関連項目
i386 Microprocessor Programmer's Reference Manual, Intel

警告
これを使用してプロセスをまったくダメにすることができます。