BIOS(9)

名称
bios_sigsearch, bios32_SDlookup, bios32 - PC BIOS との相互作用

書式
<sys/param.h> <vm/vm.h> <vm/pmap.h> <machine/param.h> <machine/pmap.h> <machine/pc/bios.h> u_int32_t bios_sigsearch(u_int32_t start, u_char *sig, int siglen, int paralen, int sigofs) int bios32_SDlookup(struct bios32_SDentry *ent) int bios32(struct bios_regs *br, u_int offset, u_short segment) BIOS_PADDRTOVADDR(addr) BIOS_VADDRTOPADDR(addr) extern struct bios32_SDentry PCIbios; extern struct SMBIOS_table SMBIOStable; extern struct DMI_table DMItable;

解説
これらの関数は、BIOS 関数と x86 PC アーキテクチャシステムで出会うデータを 取り扱うための、汎用インタフェースを提供します。

bios_sigsearch()
    サービスシグネチャの BIOS アドレス空間を検索します。 サービスシグネチャは、 大抵はアンダスコアで囲まれている大文字の ASCII 文字列です。 検索は、 start から、または start が 0 の場合には BIOS の最初から始まります。 siglen バイトの BIOS イメージと sig とが、現在位置から sigofs バイトのオフセットにおいて比較されます。 マッチしないことが分かると、現在位置が paralen バイト増加されて検索が繰り返されます。 シグネチャが見つかった場合には、その実効物理アドレスが返されます。 シグネチャが見つからなかった場合には、0 が返されます。

BIOS_VADDRTOPADDR()
    カーネル仮想アドレス addr に対応する実効物理アドレスを返します。

BIOS_VADDRTOPADDR()
    実効物理アドレス addr に対応するカーネル仮想アドレスを返します。

SMBIOStable
    NULL でない場合は、システム起動時に システムマネージメント BIOS (System Management BIOS; SMBIOS) テーブル から読み込まれた情報を含んでいる struct SMBIOS_table 構造体を指します。

DMItable
    NULL でない場合は、システム起動時に デスクトップマネージメントインタフェース (Desktop Management Interface; DMI) パラメータテーブル から読み込まれた情報を含んでいる struct DMI_table 構造体を指します。

BIOS32
システム起動時に、BIOS32 サービスディレクトリ (PCI 仕様の一部) の ために BIOS がスキャンされ、ディレクトリの存在が記録されます。 これは後で、他のサービスの場所を特定するために使用できます。

bios32_SDlookup()
    引数 ent の ident フィールドで渡される 4 バイトの識別子にマッチする BIOS32 サービス の場所を特定しようと試みます。

bios32()
    bios32 関数を呼び出します。 これは関数が、カーネルセグメント内で動作できることを 仮定しています (通常の場合)。 エントリポイントの仮想アドレスは entry で与えられ、 関数へのレジスタ引数は args で与えられます。

PCIbios
    NULL でない場合は、システム起動時に見つかった PCI BIOS エントリポイントを記述する struct bios32_SDentry 構造体を指します。