表 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 的指针。此外,curcpu 变量指向对应于当前 CPU 的 cpuinfo_t。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(如果存在)的处理器集。有关处理器集的更多详细信息,请参见 psrset(1M)。
cpu_chip 成员是物理芯片的标识符。物理芯片可能包含若干 CPU。有关更多信息,请参见 psrinfo(1M)。
cpu_lgrp 成员是与 CPU 关联的延迟组的标识符。有关延迟组的详细信息,请参见 liblgrp(3LIB)。
cpu_info 成员是与 CPU 相关联的 processor_info_t 结构(由 processor_info(2) 返回)。