精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

內核hotplug回調線程喚醒

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-05 15:55 ? 次閱讀

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

    文章

    1363

    瀏覽量

    40228
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211142
  • SMP
    SMP
    +關注

    關注

    0

    文章

    71

    瀏覽量

    19631
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19651
收藏 人收藏

    評論

    相關推薦

    鴻蒙內核源碼Task/線程技術分析

    前言 在鴻蒙內核中,廣義上可理解為一個Task就是一個線程 一、怎么理解Task 1. 官方文檔是怎么描述線程 基本概念 從系統的角度看,線程是競爭系統資源的最小運行單元。
    的頭像 發表于 10-18 10:42 ?2179次閱讀
    鴻蒙<b class='flag-5'>內核</b>源碼Task/<b class='flag-5'>線程</b>技術分析

    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.1w次閱讀
    LabWindows/CVI 程序 <b class='flag-5'>回</b><b class='flag-5'>調</b>函數設計

    調函數的詳細資料說明

    異步事件的處理,首先將異步事件發生時需要執行的代碼編寫成一個函數,并將該函數注冊成為調函數,這樣當該異步事件發生時,系統會自動調用事先注冊好的調函數。
    發表于 02-28 08:00 ?6次下載
    <b class='flag-5'>回</b><b class='flag-5'>調</b>函數的詳細資料說明

    C語言函數的調函數

    來源:嵌入式客棧 1 什么是調函數?首先什么是調呢? 我的理解是:把一段可執行的代碼像參數傳遞那樣傳給其他代碼,而這段代碼會在某個時刻被調用執行,這就叫做回
    的頭像 發表于 09-11 09:57 ?4099次閱讀

    深入淺析Linux內核內核線程(上)

    本文力求與完整介紹完內核線程的整個生命周期,如內核線程的創建、調度等等,當然本文還是主要從內存管理和進程調度兩個維度來解析,且不會涉及到具體的內核
    的頭像 發表于 04-28 16:26 ?2026次閱讀
    深入淺析Linux<b class='flag-5'>內核</b>之<b class='flag-5'>內核</b><b class='flag-5'>線程</b>(上)

    Alluxio線程池結構與吞吐量調

    本文介紹了 Alluxio Master 的線程池結構與每個線程的功能。在調優過程中,利用分析結果調整審計日志的 blocking queue,調整 UFS-SYNC-PREFETCH 線程
    發表于 11-11 11:36 ?580次閱讀

    根據調機制注冊事件并處理調VI

    通過事件調注冊函數(Register Event Callback)注冊一個調VI,在事件發生時會運行該回調VI,通常用于注冊和處理.N
    的頭像 發表于 11-24 09:15 ?2200次閱讀

    函數指針和調函數的使用方法

    了解開發語言的朋友應該都會對調函數有所了解,在很多的程序開發語言中都能看到調的身影。很多場景下,當某個條件成立以后我們希望代碼執行某些指定的部分,這個時候可以考慮使用回
    的頭像 發表于 04-10 15:08 ?1063次閱讀

    線程事務的滾是怎么結合進去的?

    某一線程在開始運行前等待n個線程執行完畢。 將CountDownLatch的計數器初始化為new CountDownLatch(n),每當一個任務線程執行完畢,就將計數器減1 countdownLatch.countDown()
    發表于 05-08 11:01 ?438次閱讀
    多<b class='flag-5'>線程</b>事務的<b class='flag-5'>回</b>滾是怎么結合進去的?

    C語言|調函數的不同用法

    調函數是個高級操作技巧,也是日常項目中常常使用到的技能。之所以說調函數是個高級操作技巧,是因為它讓異步操作更加方便,眾所周知程序執行分為同步操作和異步操作,同步操作故名思意就是按代
    發表于 07-10 10:34 ?1259次閱讀

    labview中事件調的使用

    介紹LabVIEW中事件調的使用方法,可以用于處理執行時間較長的異步事件
    的頭像 發表于 08-24 16:38 ?4114次閱讀
    labview中事件<b class='flag-5'>回</b><b class='flag-5'>調</b>的使用

    調函數(callback)是什么?調函數的實現方法

    調函數是一種特殊的函數,它作為參數傳遞給另一個函數,并在被調用函數執行完畢后被調用。調函數通常用于事件處理、異步編程和處理各種操作系統和框架的API。
    發表于 03-12 11:46 ?2715次閱讀