0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

內(nèi)核hotplug回調(diào)線程喚醒

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

hotplug回調(diào)線程喚醒

內(nèi)核使用以下流程喚醒特定cpu的hotplug線程,用于執(zhí)行實(shí)際的cpu啟動(dòng)流程:
圖片
由于cpu啟動(dòng)時(shí)需要與一系列模塊交互以執(zhí)行相應(yīng)的準(zhǔn)備工作,為此內(nèi)核為其定義了一組hotplug狀態(tài),用于表示cpu在啟動(dòng)或關(guān)閉時(shí)分別需要執(zhí)行的流程。以下為個(gè)階段狀態(tài)定義示例(由于該數(shù)組較長(zhǎng),故只截了一小段):

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,
	},
}

以上每個(gè)階段都可包含startup.single和teardown.single兩個(gè)回調(diào)函數(shù),分別表示cpu啟動(dòng)和關(guān)閉時(shí)需要執(zhí)行的流程。其中在cpu啟動(dòng)時(shí),將會(huì)從CPUHP_OFFLINE狀態(tài)開(kāi)始,依次執(zhí)行各個(gè)階段的startup.single回調(diào)函數(shù)。其中CPUHP_BRINGUP_CPU及之前的階段都在secondary cpu啟動(dòng)之前執(zhí)行。

而CPUHP_BRINGUP_CPU階段的回調(diào)函數(shù)bringup_cpu,會(huì)實(shí)際觸發(fā)secondary cpu的啟動(dòng)流程。它將通過(guò)cpu_ops接口調(diào)用spin-table函數(shù),啟動(dòng)secondary cpu,并等待其啟動(dòng)完成。

當(dāng)secondary cpu啟動(dòng)完成后,將喚醒hotplug線程,其將繼續(xù)執(zhí)行CPUHP_BRINGUP_CPU之后階段相關(guān)的回調(diào)函數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40084
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209406
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    19557
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    19580
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙內(nèi)核源碼Task/線程技術(shù)分析

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

    MYSQL在UNIX上建立線程調(diào)函數(shù)

    有新的連接到來(lái),然后調(diào)用線程調(diào)函數(shù)建立新的線程來(lái)處理這個(gè)新的accpet的socket通道(還會(huì)判斷是否有空閑的線程隊(duì)列而不需要新建立新的
    發(fā)表于 08-05 07:55

    rt-thread的信號(hào)調(diào)函數(shù)對(duì)內(nèi)核有何影響呢

    信號(hào)的到達(dá),事實(shí)上,線程也不知道信號(hào)到底什么時(shí)候到達(dá)。線程之間可以互相通過(guò)調(diào)用 rt_thread_kill 發(fā)送信號(hào)。以上畫線部分是我特意要大家注意的,我們要看待中斷調(diào)函數(shù)那樣,看
    發(fā)表于 03-16 10:14

    詳解java 調(diào)機(jī)制

    代碼示例 接下來(lái)看一下調(diào)的代碼示例,代碼模擬的是這樣一種場(chǎng)景:老師問(wèn)學(xué)生問(wèn)題,學(xué)生思考完畢回答老師。 首先定義一個(gè)調(diào)接口,只有一個(gè)方法tellAnswer(int answer),
    發(fā)表于 09-28 13:14 ?0次下載

    LabWindows/CVI 程序 調(diào)函數(shù)設(shè)計(jì)

    調(diào)函數(shù)是系統(tǒng)框架設(shè)計(jì)中非常重要的一種手段,所謂調(diào)函數(shù)(callback )是指一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。
    發(fā)表于 05-03 16:54 ?1.1w次閱讀
    LabWindows/CVI 程序 <b class='flag-5'>回</b><b class='flag-5'>調(diào)</b>函數(shù)設(shè)計(jì)

    調(diào)函數(shù)的詳細(xì)資料說(shuō)明

    異步事件的處理,首先將異步事件發(fā)生時(shí)需要執(zhí)行的代碼編寫成一個(gè)函數(shù),并將該函數(shù)注冊(cè)成為調(diào)函數(shù),這樣當(dāng)該異步事件發(fā)生時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用事先注冊(cè)好的調(diào)函數(shù)。
    發(fā)表于 02-28 08:00 ?6次下載
    <b class='flag-5'>回</b><b class='flag-5'>調(diào)</b>函數(shù)的詳細(xì)資料說(shuō)明

    C語(yǔ)言函數(shù)的調(diào)函數(shù)

    來(lái)源:嵌入式客棧 1 什么是調(diào)函數(shù)?首先什么是調(diào)呢? 我的理解是:把一段可執(zhí)行的代碼像參數(shù)傳遞那樣傳給其他代碼,而這段代碼會(huì)在某個(gè)時(shí)刻被調(diào)用執(zhí)行,這就叫做回
    的頭像 發(fā)表于 09-11 09:57 ?4019次閱讀

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

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

    Alluxio線程池結(jié)構(gòu)與吞吐量調(diào)優(yōu)

    本文介紹了 Alluxio Master 的線程池結(jié)構(gòu)與每個(gè)線程的功能。在調(diào)優(yōu)過(guò)程中,利用分析結(jié)果調(diào)整審計(jì)日志的 blocking queue,調(diào)整 UFS-SYNC-PREFETCH 線程
    發(fā)表于 11-11 11:36 ?525次閱讀

    根據(jù)調(diào)機(jī)制注冊(cè)事件并處理調(diào)VI

    通過(guò)事件調(diào)注冊(cè)函數(shù)(Register Event Callback)注冊(cè)一個(gè)調(diào)VI,在事件發(fā)生時(shí)會(huì)運(yùn)行該回調(diào)VI,通常用于注冊(cè)和處理.N
    的頭像 發(fā)表于 11-24 09:15 ?2065次閱讀

    函數(shù)指針和調(diào)函數(shù)的使用方法

    了解開(kāi)發(fā)語(yǔ)言的朋友應(yīng)該都會(huì)對(duì)調(diào)函數(shù)有所了解,在很多的程序開(kāi)發(fā)語(yǔ)言中都能看到調(diào)的身影。很多場(chǎng)景下,當(dāng)某個(gè)條件成立以后我們希望代碼執(zhí)行某些指定的部分,這個(gè)時(shí)候可以考慮使用回
    的頭像 發(fā)表于 04-10 15:08 ?974次閱讀

    線程事務(wù)的滾是怎么結(jié)合進(jìn)去的?

    某一線程在開(kāi)始運(yùn)行前等待n個(gè)線程執(zhí)行完畢。 將CountDownLatch的計(jì)數(shù)器初始化為new CountDownLatch(n),每當(dāng)一個(gè)任務(wù)線程執(zhí)行完畢,就將計(jì)數(shù)器減1 countdownLatch.countDown()
    發(fā)表于 05-08 11:01 ?384次閱讀
    多<b class='flag-5'>線程</b>事務(wù)的<b class='flag-5'>回</b>滾是怎么結(jié)合進(jìn)去的?

    C語(yǔ)言|調(diào)函數(shù)的不同用法

    調(diào)函數(shù)是個(gè)高級(jí)操作技巧,也是日常項(xiàng)目中常常使用到的技能。之所以說(shuō)調(diào)函數(shù)是個(gè)高級(jí)操作技巧,是因?yàn)樗尞惒讲僮鞲臃奖?,眾所周知程序?zhí)行分為同步操作和異步操作,同步操作故名思意就是按代
    發(fā)表于 07-10 10:34 ?1128次閱讀

    labview中事件調(diào)的使用

    介紹LabVIEW中事件調(diào)的使用方法,可以用于處理執(zhí)行時(shí)間較長(zhǎng)的異步事件
    的頭像 發(fā)表于 08-24 16:38 ?3534次閱讀
    labview中事件<b class='flag-5'>回</b><b class='flag-5'>調(diào)</b>的使用

    調(diào)函數(shù)(callback)是什么?調(diào)函數(shù)的實(shí)現(xiàn)方法

    調(diào)函數(shù)是一種特殊的函數(shù),它作為參數(shù)傳遞給另一個(gè)函數(shù),并在被調(diào)用函數(shù)執(zhí)行完畢后被調(diào)用。調(diào)函數(shù)通常用于事件處理、異步編程和處理各種操作系統(tǒng)和框架的API。
    發(fā)表于 03-12 11:46 ?2237次閱讀