hotplug回調線程喚醒
內核使用以下流程喚醒特定cpu的hotplug線程,用于執行實際的cpu啟動流程:
由于cpu啟動時需要與一系列模塊交互以執行相應的準備工作,為此內核為其定義了一組hotplug狀態,用于表示cpu在啟動或關閉時分別需要執行的流程。以下為個階段狀態定義示例(由于該數組較長,故只截了一小段):
static struct cpuhp_step cpuhp_hp_states[] = {
[CPUHP_OFFLINE] = {
.name = "offline",
.startup.single = NULL,
.teardown.single = NULL,
},
…
[CPUHP_BRINGUP_CPU] = {
.name = "cpu:bringup",
.startup.single = bringup_cpu,
.teardown.single = finish_cpu,
.cant_stop = true,
}
…
[CPUHP_ONLINE] = {
.name = "online",
.startup.single = NULL,
.teardown.single = NULL,
},
}
以上每個階段都可包含startup.single和teardown.single兩個回調函數,分別表示cpu啟動和關閉時需要執行的流程。其中在cpu啟動時,將會從CPUHP_OFFLINE狀態開始,依次執行各個階段的startup.single回調函數。其中CPUHP_BRINGUP_CPU及之前的階段都在secondary cpu啟動之前執行。
而CPUHP_BRINGUP_CPU階段的回調函數bringup_cpu,會實際觸發secondary cpu的啟動流程。它將通過cpu_ops接口調用spin-table函數,啟動secondary cpu,并等待其啟動完成。
當secondary cpu啟動完成后,將喚醒hotplug線程,其將繼續執行CPUHP_BRINGUP_CPU之后階段相關的回調函數。
-
內核
+關注
關注
3文章
1372瀏覽量
40300 -
cpu
+關注
關注
68文章
10870瀏覽量
211901 -
SMP
+關注
關注
0文章
74瀏覽量
19680 -
線程
+關注
關注
0文章
505瀏覽量
19695
發布評論請先 登錄
相關推薦
鴻蒙內核源碼Task/線程技術分析
![鴻蒙<b class='flag-5'>內核</b>源碼Task/<b class='flag-5'>線程</b>技術分析](https://file.elecfans.com/web1/M00/CA/33/o4YBAF-Lqy6AVRPzAAA48147isQ437.png)
MYSQL在UNIX上建立線程的回調函數
rt-thread的信號回調函數對內核有何影響呢
詳解java 回調機制
LabWindows/CVI 程序 回調函數設計
![LabWindows/CVI 程序 <b class='flag-5'>回</b><b class='flag-5'>調</b>函數設計](https://file1.elecfans.com//web2/M00/A7/2C/wKgZomUMQs-AL6FqAAAZDGcCwbE462.jpg)
回調函數的詳細資料說明
![<b class='flag-5'>回</b><b class='flag-5'>調</b>函數的詳細資料說明](https://file.elecfans.com/web1/M00/86/60/pIYBAFx3jCOAPTYkAAIm4TAodbs965.png)
C語言函數的回調函數
Alluxio線程池結構與吞吐量調優
根據回調機制注冊事件并處理回調VI
函數指針和回調函數的使用方法
多線程事務的回滾是怎么結合進去的?
![多<b class='flag-5'>線程</b>事務的<b class='flag-5'>回</b>滾是怎么結合進去的?](https://file1.elecfans.com/web2/M00/82/8D/wKgZomRYZpyAK5ROAAAGEQ8NRLU791.jpg)
評論