I386_GET_LDT(2) FreeBSD システムコールマニュアル I386_GET_LDT(2)
名称
i386_get_ldt, i386_set_ldt − i386 プロセスごとのローカル記述子テーブルエ ントリを管理する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <machine/segments.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 は、 <i386/segments.h> で定義されている segment_descriptor ま たは gate_descriptor であることができます。これらの構成要素は、アーキテク チャに対応してばらばらになったビットフィールドとして定義されているので、 それらを組み立てる際には注意を払う必要があります。 start_sel が LDT_AUTO_ALLOC で、 num_sels が 1 で、 descs によって指され る記述子が正当である場合には、 i386_set_ldt() は記述子を割り当てて、その セレクタ番号を返します。 num_descs が 1 で、 start_sels が有効で、 descs が NULL の場合には、 i386_set_ldt() はその記述子を開放します (後でまた再割り当てできるようにし ます)。 num_descs が 0 で、 start_sels が 0 で、 descs が NULL の場合には特別な場 合として、 i386_set_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 |
警告
これを使用してプロセスをまったくダメにすることができます。 FreeBSD 10.0 September 20, 1993 FreeBSD 10.0 |