确定流程是否被抢先/阻止

时间:2012-04-27 06:40:46

标签: c linux

在两个代码点之间,无论如何我可以判断该进程是否已经被内核抢占,或者说在那个时间内是否在同一个处理器上运行了其他任何代码?

//Point A
some_type capture = some_capture();
.
.
.
//Point B
if( interrupted( capture ) )

我是否可以使用任何系统调用,或者我可以读取的用户空间变量,这可以实现some_captureinterrupted

我正在尝试改进部分基准测试代码,并希望排除此类示例。通常我可以使用FIFO线程,但在某些情况下我不能。一般来说,我计时的东西比时间片少,并且往往不会阻塞,因此对它们何时进行的任何测量都不是对孤立函数时间的精确测量。

1 个答案:

答案 0 :(得分:0)

我认为你不能这样做,但是你可以调用sched_setscheduler()来提供进程SCHED_FIFO调度策略和合适的(非零)优先级。这使得它成为一个实时任务,除了另一个更高优先级的实时任务(其中可能没有)之外,它不能被中断。