riscv - kernel - smp_processor_id

https://mp.weixin.qq.com/s/cw5F3tIEdn5dx64XzCmo7Q

 

简单介绍smp_processor_id相关的内容。

 

本文目录:

1. secondary processors开始执行

2. smp_processor_id()

3. current_thread_info()->cpu何时赋值

4. __cpu_up_task_pointer

5. smp_callin

 

以下正文:

1. secondary processors开始执行

 

在head.S中定义的启动流程中,落选的cpu跳转到.Lsecondary_start处执行:

 

.Lsecondary_start的定义如下:

其中:

a. 把.Lsecondary_park的地址,写入到mtvec寄存器,作为异常处理的基地址;

b. a0中存放的是hartid:

将其作为偏移量,计算出相应核心对应的__cpu_up_stack_pointer和__cpu_up_task_pointer的地址;

c. 判断相应地址是否为0,如果是0,则表示还没有准备好让该核心启动;

d. 如果已经准备好,则跳转到secondary_start_common执行:

-----------------------------------------------------------------------------
这是一篇付费文章,请移步付费阅读全文,谢谢!
文章链接:https://mp.weixin.qq.com/s/cw5F3tIEdn5dx64XzCmo7Q

posted @ 2021-09-15 15:27  wjcdx  阅读(277)  评论(0编辑  收藏  举报