Linux kernel 是一种禁用中断专用核心';x86上的s中断(在linux用户空间中)

Linux kernel 是一种禁用中断专用核心';x86上的s中断(在linux用户空间中),linux-kernel,x86-64,multicore,Linux Kernel,X86 64,Multicore,现在,当它运行时,我有一段代码,我不希望它被中断。所以我想知道的是 有一种方法可以禁用它或不处理任何输入 有没有一种方法可以让Sepical core只运行一个进程。要禁用中断,您可以实现一个系统调用来调用 irq_disable() 及 当你离开的时候。然而,在大多数情况下,应为非常快速的操作禁用中断。您可能还需要是root才能执行该系统调用(待检查) 对于第二个问题,如果我理解得很好,可以通过 int sched_setaffinity(pid_t pid, size_t cpuse

现在,当它运行时,我有一段代码,我不希望它被中断。所以我想知道的是 有一种方法可以禁用它或不处理任何输入


有没有一种方法可以让Sepical core只运行一个进程。

要禁用中断,您可以实现一个系统调用来调用

irq_disable()

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

对于第二个问题,如果我理解得很好,可以通过

   int sched_setaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);

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

   int sched_setaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);