簡單介紹smp_processor_id相關的内容。

本文目錄:
1. secondary processors開始執行
2. smp_processor_id()
3. current_thread_info()->cpu何時指派
4. __cpu_up_task_pointer
5. smp_callin
以下正文:
在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執行: