スポンサーリンク

BIOS(9) FreeBSD カーネル開発者マニュアル BIOS(9)

名称

bios_sigsearch, bios32_SDlookup, bios32 − PC BIOS との相互作用

書式

#include <sys/param.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <machine/param.h>
#include <machine/pmap.h>
#include <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()

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

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

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

FreeBSD 10.0 August 1, 1997 FreeBSD 10.0

スポンサーリンク