linux内核是如何支持深度睡眠(deep sleep)方式的?
1. 硬件架构 arm64 2. 内核版本 4.19 3. 分析相关函数 get_set_conduit_method() ->?of_property_read_string(np,"method",&method)) ->?set_conduit(PSCI_CONDUIT_HVC) 或set_conduit(PSCI_CONDUIT_SMC),根据设备树中的method属性来设定, 设定invoke_psci_fn回调函数(__invoke_psci_fn_smc或者__invoke_psci_fn_hvc) ? __invoke_psci_fn_smc() ->?arm_smccc_smc(),这是个宏定义,如下; #define arm_smccc_smc(...) __arm_smccc_smc(__VA_ARGS__,NULL) ->__arm_smccc_smc(),定义在arch/arm64/kernel/smccc-call.S中: .macro SMCCC instr /* ENTRY(__arm_smccc_smc)
SMCCC smc
ENDPROC(__arm_smccc_smc)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |