アットウィキロゴ

get_apic_id

名称

get_apic_id - BSP の APIC ID を取得する

書式

int
get_apic_id(
    uint8_t *  mmio_va,
    uint32_t * apic_id);

引数

mmio_va
APIC ID を取得するカードの MMIO の仮想アドレス
apic_id
取得した APIC ID を格納する領域へのポインタ

説明

引数 mmio_va で指定されたカードの BSP の APIC ID を取得する。
取得した APIC ID は引数 apic_id が示す領域に格納する。

APIC ID の取得には、SBOX_SCRATCH2 レジスタの APIC_ID フィールドを使用する。

実装には、どのプロセサの APIC ID を取得するのか明示されていないが、
カード指定のみでどれかと問われれば BSP しかないだろう。

戻り値

処理に成功した場合、引数 apic_id が示す領域に APIC ID を格納して、0 を返す。
そうでない場合、0 以外の値を返す。

とはいうものの、失敗するケースはない。

参照


実装

host/driver/uos_download.c
290 /*
291   DESCRIPTION:: gets APIC ID from scratch register 2
292   PARAMETERS::
293         [in]void *mmio_va - virtual address to access MMIO registers
294         [out]uint32_t *apic_id - apic id
295   RETURN_VALUE:: 0 if successful, non-zero if failure
296 */
297 int
298 get_apic_id(uint8_t *mmio_va, uint32_t *apic_id)
299 {
300         int status = 0;
301         uint32_t scratch2 = 0;
302
303         scratch2 = SBOX_READ(mmio_va, SBOX_SCRATCH2);
304         *apic_id = SCRATCH2_APIC_ID(scratch2);
305
306         return status;
307 }
最終更新:2012年11月18日 03:34