日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 内核 sleep,linux内核是如何支持深度睡眠(deep sleep)方式的?

發(fā)布時(shí)間:2025/3/19 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 内核 sleep,linux内核是如何支持深度睡眠(deep sleep)方式的? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 硬件架構(gòu)

arm64

2. 內(nèi)核版本

4.19

3. 分析相關(guān)函數(shù)

get_set_conduit_method()

->?of_property_read_string(np, "method", &method))

->?set_conduit(PSCI_CONDUIT_HVC) 或set_conduit(PSCI_CONDUIT_SMC),根據(jù)設(shè)備樹中的method屬性來設(shè)定,

設(shè)定invoke_psci_fn回調(diào)函數(shù)(__invoke_psci_fn_smc或者_(dá)_invoke_psci_fn_hvc)

__invoke_psci_fn_smc()

->?arm_smccc_smc(),這是個(gè)宏定義,如下;

#define arm_smccc_smc(...) __arm_smccc_smc(__VA_ARGS__, NULL)

->__arm_smccc_smc(),定義在arch/arm64/kernel/smccc-call.S中:

.macro SMCCC instr

.cfi_startproc

\instr #0

ldr x4, [sp]

stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]

stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]

ldr x4, [sp, #8]

cbz x4, 1f /* no quirk structure */

ldr x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]

cmp x9, #ARM_SMCCC_QUIRK_QCOM_A6

b.ne 1f

str x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]

1: ret

.cfi_endproc

.endm

/*

* void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2,

* unsigned long a3, unsigned long a4, unsigned long a5,

* unsigned long a6, unsigned long a7, struct arm_smccc_res *res,

* struct arm_smccc_quirk *quirk)

*/

ENTRY(__arm_smccc_smc)

SMCCC smc

ENDPROC(__arm_smccc_smc)

總結(jié)

以上是生活随笔為你收集整理的linux 内核 sleep,linux内核是如何支持深度睡眠(deep sleep)方式的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。