【发布时间】:2016-01-10 13:34:46
【问题描述】:
从驱动程序中的随机位置选择当前 CPU 将执行的下一个任务(进程)的最安全方法是什么?
我看到 struct task_struct(来自 sched.h)包含一个 next_task 成员,并认为执行该任务的一个好方法是使用 current 宏,并使用该成员来选择下一个。
但是,我看到函数 __schedule() 以不同的方式执行该任务 - 使用 cpu_rq 之类的函数...
那么,什么是正确的方法以及方法之间的区别?
顺便说一句,我看到了“当前”任务的两种不同定义。
在 sched.h 中:
#define current (0+current_set[smp_processor_id()])current.h 中更受欢迎的一个:
#define current get_current()返回percpu_read_stable(current_task)
对于我最初的解决方案,这两个听起来都不错,但是怎么可能有两个同名的宏呢?它们之间有什么区别?
【问题讨论】: