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之后階段相關的回調函數。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內核
+關注
關注
4文章
1468瀏覽量
42880 -
cpu
+關注
關注
68文章
11279瀏覽量
225008 -
SMP
+關注
關注
0文章
81瀏覽量
20828 -
線程
+關注
關注
0文章
509瀏覽量
20829
發布評論請先 登錄
相關推薦
熱點推薦
鴻蒙內核源碼Task/線程技術分析
前言 在鴻蒙內核中,廣義上可理解為一個Task就是一個線程 一、怎么理解Task 1. 官方文檔是怎么描述線程 基本概念 從系統的角度看,線程是競爭系統資源的最小運行單元。
MYSQL在UNIX上建立線程的回調函數
有新的連接到來,然后調用線程回調函數建立新的線程來處理這個新的accpet的socket通道(還會判斷是否有空閑的線程隊列而不需要新建立新的
發表于 08-05 07:55
rt-thread的信號回調函數對內核有何影響呢
信號的到達,事實上,線程也不知道信號到底什么時候到達。線程之間可以互相通過調用 rt_thread_kill 發送信號。以上畫線部分是我特意要大家注意的,我們要看待中斷回調函數那樣,看
發表于 03-16 10:14
詳解java 回調機制
代碼示例 接下來看一下回調的代碼示例,代碼模擬的是這樣一種場景:老師問學生問題,學生思考完畢回答老師。 首先定義一個回調接口,只有一個方法tellAnswer(int answer),
發表于 09-28 13:14
?0次下載
LabWindows/CVI 程序 回調函數設計
回調函數是系統框架設計中非常重要的一種手段,所謂回調函數(callback )是指一個通過函數指針調用的函數。回
發表于 05-03 16:54
?1.2w次閱讀
回調函數的詳細資料說明
異步事件的處理,首先將異步事件發生時需要執行的代碼編寫成一個函數,并將該函數注冊成為回調函數,這樣當該異步事件發生時,系統會自動調用事先注冊好的回調函數。
發表于 02-28 08:00
?6次下載
C語言函數的回調函數
來源:嵌入式客棧 1 什么是回調函數?首先什么是回調呢? 我的理解是:把一段可執行的代碼像參數傳遞那樣傳給其他代碼,而這段代碼會在某個時刻被調用執行,這就叫做回
Alluxio線程池結構與吞吐量調優
本文介紹了 Alluxio Master 的線程池結構與每個線程的功能。在調優過程中,利用分析結果調整審計日志的 blocking queue,調整 UFS-SYNC-PREFETCH 線程
發表于 11-11 11:36
?1080次閱讀
根據回調機制注冊事件并處理回調VI
通過事件回調注冊函數(Register Event Callback)注冊一個回調VI,在事件發生時會運行該回調VI,通常用于注冊和處理.N
函數指針和回調函數的使用方法
了解開發語言的朋友應該都會對回調函數有所了解,在很多的程序開發語言中都能看到回調的身影。很多場景下,當某個條件成立以后我們希望代碼執行某些指定的部分,這個時候可以考慮使用回
多線程事務的回滾是怎么結合進去的?
某一線程在開始運行前等待n個線程執行完畢。 將CountDownLatch的計數器初始化為new CountDownLatch(n),每當一個任務線程執行完畢,就將計數器減1 countdownLatch.countDown()
發表于 05-08 11:01
?748次閱讀
C語言|回調函數的不同用法
回調函數是個高級操作技巧,也是日常項目中常常使用到的技能。之所以說回調函數是個高級操作技巧,是因為它讓異步操作更加方便,眾所周知程序執行分為同步操作和異步操作,同步操作故名思意就是按代
發表于 07-10 10:34
?1893次閱讀
回調函數(callback)是什么?回調函數的實現方法
回調函數是一種特殊的函數,它作為參數傳遞給另一個函數,并在被調用函數執行完畢后被調用。回調函數通常用于事件處理、異步編程和處理各種操作系統和框架的API。
發表于 03-12 11:46
?4888次閱讀
內核hotplug回調線程喚醒
評論