I386_VM86(2) FreeBSD システムコールマニュアル I386_VM86(2)
名称
i386_vm86 − vm86 に関連する関数を制御する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/types.h> int |
i386_vm86(int function, void *data); |
解説 |
i386_vm86() システムコールは vm86 に関連するさまざまな関数を呼び出すのに 使用します。 function 引数は次の値の内の 1 つにできます。 |
VM86_INIT
カーネルのプロセス用 vm86 パラメータ領域を初期化し、 プロセスが vm86 呼び出しをできるようにします。 data 引数は次の構造体を指します。 struct vm86_init_args { debug 引数はデバッグコードをオンにするために使用され ます。 cpu_type 引数はエミュレート中のタイプの CPU を 制御するものですが、現時点では実装されていません。 int_map 引数は、vm86 割り込みを vm86 モードで処理する 必要があるか、またはプロセスに反映して戻される必要が あるかどうかを決定するビットマップです。 N 番めのビッ トが設定されている場合、割り込みはプロセスに反映され ます。そうでない場合、 vm86 割り込みテーブルによって ディスパッチされます。 |
VM86_INTCALL
プロセスが vm86 割り込みハンドラを呼び出せるようにし ます。これは効果的に INT 命令をシミュレートします。 data は下記の構造体を指し示しているべきです: struct vm86_intcall_args { intnum はシミュレートされた呼び出しのための INT のオ ペランドを指定します。例えば、値 0x10 は VGA BIOS へ の呼び出しのためによく使用されます。 vmf は割り込みハ ンドラのための呼び出し規約に従って、CPU のレジスタを 初期化するために使用されます。 |
VM86_GET_VME
Pentium(r) プロセッサの VME (仮想 8086 モード拡張) フ ラグである CR4 の ビット 0 の現在の状態を取り出すため に使用されます。 data は下記を指し示すように初期化さ れるべきです: struct vm86_vme_args { state は戻る時に VME フラグの状態が入ります。 vm86 モードに入るには、vm86 用に正しく設定したマシンコンテキスト、そして PSL_VM ビットを設定して sigreturn(2) を呼び出します。シグナルの配信時に制 御がプロセスに戻ります。 |
戻り値
関数 i386_vm86() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。 |
エラー
i386_vm86() システムコールは次の場合に失敗します: |
[EINVAL]
カーネルに vm86 サポートがないか、または無効な関数が指 定されました。 [ENOMEM] 作者 |
このマニュアルページは Jonathan Lemon が書き、 Bruce M Simpson が更新しま した。 FreeBSD 10.0 July 27, 1998 FreeBSD 10.0 |