现在,我在运行时有一段代码,我不希望它被打断。所以我想知道是有一种方法可以禁用它或不处理任何插曲。
有没有办法让 sepcial core 只运行一个进程。
要禁用中断,您可以实现一个系统调用,该调用将调用
irq_disable()
和
irq_enable()
当您退出时。但是,在大多数情况下,禁用中断应该非常快速的操作。您可能还需要成为 root 用户才能执行该系统调用(待检查)。
对于您的第二个问题,如果我理解得很好,您可以通过以下方式设置进程亲和力
int sched_setaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);
由于您特别提到这是一个用户空间应用程序,因此您可能需要考虑使用 Linux 提供的众多同步原语之一。您选择使用的一个将取决于您要执行的操作。这将允许您定义代码的关键部分,而不会产生争用条件和/或死锁。