在Linux上,sched.h
包含
int sched_rr_get_interval(pid_t pid, struct timespec * tp);
获取进程的时间片。但是OS X El Capitan附带的文件并不符合该定义。
OS X上有替代方案吗?
答案 0 :(得分:0)
与这些东西相关的API非常拜占庭并且记录不清,但这是我发现的。
首先,与RR调度相关的数据类型似乎在/usr/include/mach/policy.h
,在第155行附近。有这个结构:
struct policy_rr_info {
...
integer_t quantum;
....
};
quantum
是,我认为,时间片(不确定单位)。然后为了在同一个地方定义的这个或相关类型,我找到了文件{{ 1}},表示类型/usr/include/mach/mach_types.def
在第203行包含字段struct thread_policy_t
。
接下来,我在policy_rr_info_t
中找到了公共函数/usr/include/mach/thread_act.h
,它可以将有关线程策略的信息检索到thread_policy_get
。
所以,倒退。我认为(但根本没有尝试过)你可以
struct thread_policy_t *
例程将有关线程调度状态的信息返回到thread_policy_get()
thread_policy_t
子子结构policy_rr_info_t
字段。此部分API没有手册页,但this Apple Developer页面至少解释了如何使用此API。
请注意,这些都是从grepping各种内核头文件中收集到的,我绝对没有尝试在任何实际代码中使用任何这些API。