表 26–2 に、sched プローブの引数の型を一覧します。引数については、表 26–1 を参照してください。
表 26–2 sched プローブ引数
プローブ |
args[0] |
args[1] |
args[2] |
args[3] |
---|---|---|---|---|
change-pri |
lwpsinfo_t * |
psinfo_t * |
pri_t |
— |
dequeue |
lwpsinfo_t * |
psinfo_t * |
cpuinfo_t * |
— |
enqueue |
lwpsinfo_t * |
psinfo_t * |
cpuinfo_t * |
int |
off-cpu |
lwpsinfo_t * |
psinfo_t * |
— |
— |
on-cpu |
— |
— |
— |
— |
preempt |
— |
— |
— |
— |
remain-cpu |
— |
— |
— |
— |
schedctl-nopreempt |
lwpsinfo_t * |
psinfo_t * |
— |
— |
schedctl-preempt |
lwpsinfo_t * |
psinfo_t * |
— |
— |
schedctl-yield |
lwpsinfo_t * |
psinfo_t * |
— |
— |
sleep |
— |
— |
— |
— |
surrender |
lwpsinfo_t * |
psinfo_t * |
— |
— |
tick |
lwpsinfo_t * |
psinfo_t * |
— |
— |
wakeup |
lwpsinfo_t * |
psinfo_t * |
— |
— |
表 26–2 からわかるように、多くの sched プローブは、引数として lwpsinfo_t のポインタ (スレッド) と psinfo_t のポインタ (スレッドが含まれているプロセス) をとります。これらの構造体の詳細については、それぞれ 「lwpsinfo_t」と 「psinfo_t」を参照してください。
cpuinfo_t 構造体は、CPU を定義します。表 26–2 からわかるように、enqueue プローブと dequeue プローブは、どちらも引数として cpuinfo_t のポインタをとります。また、現在の CPU の cpuinfo_t は、curcpu 変数でポイントされています。以下に、cpuinfo_t 構造体の定義を示します。
typedef struct cpuinfo { processorid_t cpu_id; /* CPU identifier */ psetid_t cpu_pset; /* processor set identifier */ chipid_t cpu_chip; /* chip identifier */ lgrp_id_t cpu_lgrp; /* locality group identifer */ processor_info_t cpu_info; /* CPU information */ } cpuinfo_t;
cpu_id メンバーは、psrinfo(1M) と p_online(2) から返されるプロセッサ識別子です。
cpu_pset メンバーは、CPU を含む (CPU がある場合) プロセッサセットです。プロセッサセットの詳細については、psrset(1M) のマニュアルページを参照してください。
cpu_chip メンバーは、物理チップの識別子です。物理チップには、複数の CPU が搭載されていることがあります。詳細については、psrinfo(1M) のマニュアルページを参照してください。
cpu_lgrp メンバーは、CPU の遅延グループの識別子です。遅延グループの詳細については、liblgrp(3LIB) のマニュアルページを参照してください。
cpu_info メンバーは、processor_info(2) から返される CPU の processor_info_t 構造体です。