我正在制作一个仿真驱动程序,它需要我调用schedule()
ATOMIC 上下文才能使仿真部分工作。现在我有这个 hack 允许我schedule()
在 ATOMIC(例如自旋锁)上下文中调用:
int p_count = current_thread_info()->preempt_count;
current_thread_info()->preempt_count = 0;
schedule();
current_thread_info()->preempt_count = p_count;
但这在 IRQ 中不起作用,系统只是在调用后停止schedule()
。
有什么办法可以让我这样做来破解内核吗?我正在使用带有用户模式 Linux 的 Linux 内核 4.2.1