是一种在x86上禁用中断sepcial core的interruput的方法(在linux用户空间中)

时间:2014-01-09 10:24:05

标签: linux-kernel x86-64 multicore

现在,我运行时有一段代码,我不希望它被打断。所以我想知道的是 有办法禁用它或不处理任何interrput。

有没有办法让特殊核心只运行一个过程。

2 个答案:

答案 0 :(得分:0)

要禁用中断,您可以实现可以调用

的系统调用
irq_disable()

irq_enable()

当你退出时。但是,在大多数情况下,禁用中断应该可以进行非常快速的操作。您还可能需要root才能执行该系统调用(待检查)。

对于你的第二个问题,如果我理解得很清楚,你可以通过

设置过程亲和力
   int sched_setaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);

答案 1 :(得分:0)

由于您特别提到这是一个用户空间应用程序,您可能希望研究使用linux提供的众多同步原语之一。您选择使用的那个将取决于您尝试做什么。这将允许您定义代码的关键部分,而不会出现竞争条件和/或死锁的可能性。