从内核源代码来看:
static void __sched notrace __schedule(bool preempt)
{
struct task_struct *prev, *next;
unsigned long *switch_count;
struct rq_flags rf;
struct rq *rq;
int cpu;
cpu = smp_processor_id();
rq = cpu_rq(cpu);
prev = rq->curr; // <=================(1)
.....
Run Code Online (Sandbox Code Playgroud)
上面第 (1) 行中的current和之间有什么区别?prev
在该行之后添加printk():
static void __sched notrace __schedule(bool preempt)
{
struct task_struct *prev, *next;
unsigned long *switch_count;
struct rq_flags rf;
struct rq *rq;
int cpu;
cpu = smp_processor_id();
rq = cpu_rq(cpu);
prev = rq->curr;
//if(prev->pid != current->pid)
printk("the prev->pid …Run Code Online (Sandbox Code Playgroud)