色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何在內核中啟動secondary cpu

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

啟動secondary cpu

內核在啟動secondary cpu之前當然需要為其準備好執行環境,因為內核中cpu最終都將由調度器管理,故此時調度子系統應該要初始化完成。

同時cpu啟動完成轉交給調度器之前,并沒有實際的業務進程,而我們知道內核中cpu在空閑時會執行idle進程。因此,在其啟動之前需要為每個cpu初始化一個idle進程。

另外,由于將一個cpu通過熱插拔方式移除后,再次啟動該cpu的流程,與secondary cpu的啟動流程是相同的,因此內核復用了cpu hotplug框架用于啟動secondary cpu。

而內核為每個cpu都分配了一個獨立的hotplug線程,用于執行本cpu相關的熱插拔流程。為此,內核通過以下流程執行secondary cpu啟動操作:

圖片

idle進程初始化

以下代碼為每個非boot cpu分配一個idle進程

void __init idle_threads_init(void)
{
	…
	boot_cpu = smp_processor_id();
	for_each_possible_cpu(cpu) {                 (1if (cpu != boot_cpu)
			idle_init(cpu);              (2)
	}
}

(1)遍歷系統中所有的possible cpu

(2)若該cpu為secondary cpu,則為其初始化一個idle進程

hotplug線程初始化

以下代碼為每個cpu初始化一個hotplug線程

void __init cpuhp_threads_init(void)
{
	BUG_ON(smpboot_register_percpu_thread(&cpuhp_threads));
	kthread_unpark(this_cpu_read(cpuhp_state.thread));
}

其中線程的描述結構體定義如下:

static struct smp_hotplug_thread cpuhp_threads = {
	.store			= &cpuhp_state.thread,               (1)
	.create			= &cpuhp_create,                     (2)
	.thread_should_run	= cpuhp_should_run,                  (3)
	.thread_fn		= cpuhp_thread_fun,                  (4)
	.thread_comm		= "cpuhp/%u",                        (5)
	.selfparking		= true,                              (6)
}

(1)用于保存cpu上的task struct指針

(2)線程創建時調用的回調

(3)該回調用于獲取線程是否需要退出標志

(4)cpu hotplug主函數,執行實際的hotplug操作

(5)該線程的線程名

(6)用于設置線程創建完成后,是否將其設置為park狀態

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1382

    瀏覽量

    40372
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10901

    瀏覽量

    212666
  • SMP
    SMP
    +關注

    關注

    0

    文章

    76

    瀏覽量

    19703
收藏 人收藏

    評論

    相關推薦

    如何使用dtb方式啟動內核

    /boot/zImagebootz 0x82000000 - 0x88000000至此,Linux內核就能啟動了。  (7)小結  從啟動Log上分析,現在內核無法掛在根文件系統,在
    發表于 04-22 14:06

    何在eDesignSuite中將調節模式從Secondary更改為Primary?

    何在eDesignSuite中將調節模式從Secondary更改為Primary?我想設計一個低成本的85-265V AC到12V 0.2A DC隔離反激式轉換器,使用Viper06和PSR
    發表于 07-09 08:55

    是否可以通過SPAEr320 CPU的USB啟動機制啟動Linux內核

    你好 是否可以通過SPAEr320 CPU的USB啟動機制啟動Linux內核? 如果是,可以使用哪些工具為可
    發表于 08-07 14:23

    何在內核中去讀取文件的大小呢

    何在內核中去讀取文件的大小呢?有什么方法嗎?
    發表于 11-02 06:57

    I.MX8MM開發板Linux如何在內核添加驅動呢

    迅為I.MX8MM開發板編譯驅動到內核,在平時的驅動開發,經常需要在內核配置某種功能,為了方便大家開發和學習,本小節講解如何在內核
    發表于 08-29 17:46

    基于ARM體系的內核啟動解析

    初始化內存位置。具有“ psci”啟用方法的CPU應該保留在內核之外(即,在內存節點中描述給內核的內存區域之外,或者在內核
    發表于 09-14 12:02

    在內核啟動時發現SPI驅動沒有正確運行?

    在內核啟動中發現這個打印信息[ 1.138240] spi_gpio spi4.15: gpio-miso property not found, switching to no-rx mode這是
    發表于 11-28 07:54

    CPU內核結構解析

    CPU內核結構解析  CPU內核主要分為兩部分:運算器和控制器。   (一) 運算器   1、 算
    發表于 04-15 16:13 ?1538次閱讀

    米爾科技改內核調整GPIO在內核啟動階段方案

    米爾用戶在使用i.MX6UL/i.MX6ULL系列產品開發時,需要調整GPIO在內核啟動階段的狀態,這怎么操作呢?
    的頭像 發表于 11-26 16:31 ?2873次閱讀
    米爾科技改<b class='flag-5'>內核</b>調整GPIO<b class='flag-5'>在內核</b><b class='flag-5'>啟動</b>階段方案

    程序是如何在 CPU 運行的(二)

    在上一篇文章《程序是如何在 CPU 運行的(一)》筆者講述了程序中一條一條指令以及一條一條數據是如何在
    發表于 02-07 11:10 ?1次下載
    程序是如<b class='flag-5'>何在</b> <b class='flag-5'>CPU</b> <b class='flag-5'>中</b>運行的(二)

    Linux內核啟動流程(上)

    本文先講解上篇,大家看到匯編不用擔心看不懂,在內核啟動階段,沒有特別復雜的流程,都是順序執行,只需一句一句閱讀代碼即可。
    發表于 06-23 14:07 ?1698次閱讀
    Linux<b class='flag-5'>內核</b><b class='flag-5'>啟動</b>流程(上)

    secondary cpu初始化狀態設置

    ,用于填寫secondary cpu的入口地址。 uboot負責將這塊內存的地址寫入devicetree,當內核初始化完成,需要啟動
    的頭像 發表于 12-05 15:27 ?1158次閱讀
    <b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>初始化狀態設置

    SMP多核啟動cpu操作函數

    cpu操作函數 cpu_ops函數由bringup_cpu調用,以觸發secondary cpu啟動
    的頭像 發表于 12-05 16:04 ?846次閱讀
    SMP多核<b class='flag-5'>啟動</b><b class='flag-5'>cpu</b>操作函數

    secondary cpu執行流程介紹

    secondary cpu執行流程 aarch64架構secondary cpu內核入口函數為seco
    的頭像 發表于 12-05 16:12 ?906次閱讀
    <b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>執行流程介紹

    SMP多核secondary cpu啟動流程

    secondary cpu啟動 由于psci方式啟動secondary cpu的流程,除了其所執
    的頭像 發表于 12-05 17:41 ?949次閱讀
    SMP多核<b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b><b class='flag-5'>啟動</b>流程
    主站蜘蛛池模板: 久久中文字幕人妻AV熟女 | 9久久免费国产精品特黄 | 国产传媒麻豆剧精品AV | 欧美成人亚洲高清在线观看 | 日本人奶水中文影片 | 国产精品亚洲专区在线播放 | 精品无码一区二区三区不卡 | 国产成人亚洲精品午夜国产馆 | 色久天 | 97夜夜澡人人爽人人模人人喊 | 欧美506070| 亚洲成人中文 | 欧美午夜特黄AAAAAA片 | 欧美一道本一区二区三区 | 国产午夜高潮熟女精品AV | 久久亚洲国产中文字幕 | 丝瓜视频樱桃视频在线观看免费 | 国语对白嫖老妇胖老太 | 我的年轻漂亮继坶三级 | 免费看片A级毛片免费看 | 久久久GOGO无码啪啪艺术 | 亚洲精品入口一区二区乱麻豆精品 | hdsexvideos中国明星 | 国产久爱青草视频在线观看 | 精品一区二区三区免费观看 | 日韩欧美一区二区三区在线视频 | 国语自产精品一区在线视频观看 | 精品一品国产午夜福利视频 | 亚洲性夜夜夜色综合网 | 精品久久久噜噜噜久久久app | 97精品一区二区视频在线观看 | 果冻传媒mv国产陈若瑶主演 | 最近中文字幕2019国语4 | 欧美精品一区二区在线电影 | 欧美一区二区三区播放 | 精品少妇高潮蜜臀涩涩AV | 中文字幕在线观看亚洲 | 国产精品av免费观看 | 亚洲乱码一区二区三区香蕉 | 网红主播 国产精品 开放90后 | 在线播放日韩欧美亚洲日本 |