linux电源管理--syscore

本文探讨了Linux内核中的syscore_ops框架,涉及数据结构、接口注册与实现,以及典型应用场景,如睡眠唤醒回调和系统关闭过程。

目录

框架位置

数据结构及接口

原型实现解析

使用场景


框架位置

相关实现在drivers\base\syscore.c中

函数声明在include\linux\syscore_ops.h中。

依赖宏CONFIG_PM_SLEEP的使能

数据结构及接口

在头文件中,声明了函数原型以及相关结构体


   
  1. struct syscore_ops {
  2. struct list_head node;
  3. int (*suspend)( void);
  4. void (*resume)( void);
  5. void (*shutdown)( void);
  6. };
  7. extern void register_syscore_ops(struct syscore_ops *ops);
  8. extern void unregister_syscore_ops(struct syscore_ops *ops);
  9. #ifdef CONFIG_PM_SLEEP
  10. extern int syscore_suspend(void);
  11. extern void syscore_resume(void);
  12. #endif
  13. extern void syscore_shutdown(void);
  14. #endif

原型实现解析

该机制的实现在drivers\base\syscore.c中,实现非常简单,不在此过多解析。

实现包括注册和去注册接口,suspend和resume接口,以及shutdown接口,如果需要注册相关实现,首先包含该头文件,然后通过resister来注册自己的syscore回调。

使用场景

Suspend和resume回调会在睡眠唤醒流程的锁中断上下文中进行调用,典型的使用场景包括查询唤醒中断等。

 

Shutdown回调会在kernel_power_off或者reboot时进行回调,相关实现可以评估是否需要注册shutdown回调函数。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值