温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux中怎么初始化 APM

发布时间:2021-08-09 14:53:35 来源:亿速云 阅读:240 作者:Leah 栏目:系统运维

本篇文章给大家分享的是有关Linux中怎么初始化 APM,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

misc设备的主设备号是10, 而Linux APM_bios作为个misc设备, 次设备号是134。 Linux2.6.30.10内核的/drivers/char/apm-emulation.c提供了Linux APM_bios的驱动模型,也就是系统进入睡眠的入口函数,更早的版本的接口文件为:arch/arm/kernel/apm.c

在Linux APM-emulation.c中:

/*  * The apm_bios device is one of the misc char devices.  * This is its minor number.  */  #define Linux APM_MINOR_DEV 134

这个Linux APM_bios设备通过ioctl系统调用和用户空间进行通讯, 即当用户进程通过ioctl发来suspend命令时, 它就传给内核, 使系统进入suspend状态.

1,初始化

static int __init apm_init(void)  {  int ret;  if (apm_disabled) {  printk(KERN_NOTICE "apm: disabled on user request.\n");  return -ENODEV;  }

//创建一个线程, 用于处理事件队列, 工作函数是kapmd

kapmd_tsk = kthread_create(kapmd, NULL, "kapmd");  if (IS_ERR(kapmd_tsk)) {  ret = PTR_ERR(kapmd_tsk);  kapmd_tsk = NULL;  goto out;  }  wake_up_process(kapmd_tsk);

//通过proc,向用户空间输出Linux APM信息

#ifdef CONFIG_PROC_FS  proc_create("apm", 0, NULL, &apm_proc_fops);  #endif

//注册misc设备

ret = misc_register(&apm_device);  if (ret)  goto out_stop;  ret = register_pm_notifier(&apm_notif_block);  if (ret)  goto out_unregister;  return 0;  out_unregister:  misc_deregister(&apm_device);  out_stop:  remove_proc_entry("apm", NULL);  kthread_stop(kapmd_tsk);  out:  return ret;  }

以上就是Linux中怎么初始化 APM,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI