.\" Copyright (c) 1998 Jonathan Lemon .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libc/i386/sys/i386_vm86.2,v 1.15 2003/05/22 13:02:27 ru Exp % .\" .\" $FreeBSD$ .Dd July 27, 1998 .Os .Dt I386_VM86 2 .Sh 名称 .Nm i386_vm86 .Nd vm86 に関連する関数を制御する .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In machine/sysarch.h .In machine/vm86.h .Ft int .Fn i386_vm86 "int function" "void *data" .Sh 解説 .Fn i386_vm86 システムコールは vm86 に関連するさまざまな関数を呼び出すのに使用します。 .Fa function 引数は次の値の内の 1 つにできます。 .Bl -tag -offset indent -width VM86_SET_VME .It Dv VM86_INIT カーネルのプロセス用 vm86 パラメータ領域を初期化し、プロセスが vm86 呼び出しを できるようにします。 .Fa data 引数は次の構造体を指します。 .Bd -literal struct vm86_init_args { int debug; int cpu_type; u_char int_map[32]; }; .Ed .Pp .Fa debug 引数はデバッグコードをオンにするために使用されます。 .Fa cpu_type 引数はエミュレート中のタイプの CPU を制御するものですが、 現時点では実装されていません。 .Fa int_map 引数は、vm86 割り込みを vm86 モードで処理する必要があるか、またはプロセスに 反映して戻される必要があるかどうかを決定するビットマップです。 .Em N 番め のビットが設定されている場合、割り込みはプロセスに反映されます。 そうでない場合、 vm86 割り込みテーブルによってディスパッチされます。 .It Dv VM86_INTCALL プロセスが vm86 割り込みハンドラを呼び出せるようにします。 これは効果的に INT 命令をシミュレートします。 .Fa data は下記の構造体を指し示しているべきです: .Bd -literal struct vm86_intcall_args { int intnum; struct vm86frame vmf; }; .Ed .Pp .Fa intnum はシミュレートされた呼び出しのための INT のオペランドを指定します。 例えば、値 0x10 は VGA BIOS への呼び出しのためによく使用されます。 .Fa vmf は割り込みハンドラのための呼び出し規約に従って、CPU のレジスタを 初期化するために使用されます。 .It Dv VM86_GET_VME Pentium(r) プロセッサの VME (仮想 8086 モード拡張) フラグ である CR4 の ビット 0 の現在の状態を取り出すために使用されます。 .Fa data は下記を指し示すように初期化されるべきです: .Bd -literal struct vm86_vme_args { int state; /* 状態 */ }; .Ed .Pp .Fa state は戻る時に VME フラグの状態が入ります。 .\" .It Dv VM86_SET_VME .El .Pp vm86 モードに入るには、vm86 用に正しく設定したマシンコンテキスト、そして .Dv PSL_VM ビットを設定して .Xr sigreturn 2 を呼び出します。 シグナルの配信時に制御がプロセスに戻ります。 .Sh 戻り値 .Rv -std i386_vm86 .Sh エラー .Fn i386_vm86 システムコールは次の場合に失敗します: .Bl -tag -width Er .It Bq Er EINVAL カーネルに vm86 サポートがないか、または無効な関数が指定されました。 .It Bq Er ENOMEM カーネルデータ構造体を初期化するのに十分なメモリがありません。 .El .Sh 作者 .An -nosplit このマニュアルページは .An Jonathan Lemon が書き、 .An Bruce M Simpson が更新しました。