偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux APM在ARM中具體實現(xiàn)初始化

運維 系統(tǒng)運維
由于Linux APM系統(tǒng)中沒有bios設備, 所以只能為APM系統(tǒng)創(chuàng)建一個虛擬的字符設備與用戶空間進行通訊. 即在APM中實現(xiàn)一個misc設備,實質上也是一個字符設備

misc設備的主設備號是10, 而Linux APM_bios作為個misc設備, 次設備號是134。 Linux2.6.30.10內核的/drivers/char/apm-emulation.c提供了Linux APM_bios的驅動模型,也就是系統(tǒng)進入睡眠的入口函數,更早的版本的接口文件為:arch/arm/kernel/apm.c

在Linux APM-emulation.c中:
 

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

 

這個Linux APM_bios設備通過ioctl系統(tǒng)調用和用戶空間進行通訊, 即當用戶進程通過ioctl發(fā)來suspend命令時, 它就傳給內核, 使系統(tǒng)進入suspend狀態(tài).

1,初始化
 

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

 

//創(chuàng)建一個線程, 用于處理事件隊列, 工作函數是kapmd
 

  1. kapmd_tsk = kthread_create(kapmd, NULL, "kapmd");  
  2. if (IS_ERR(kapmd_tsk)) {  
  3. ret = PTR_ERR(kapmd_tsk);  
  4. kapmd_tsk = NULL;  
  5. goto out;  
  6. }  
  7. wake_up_process(kapmd_tsk);  

 

//通過proc,向用戶空間輸出Linux APM信息
 

  1. #ifdef CONFIG_PROC_FS  
  2. proc_create("apm", 0, NULL, &apm_proc_fops);  
  3. #endif 

//注冊misc設備
 

  1. ret = misc_register(&apm_device);  
  2. if (ret)  
  3. goto out_stop;  
  4. ret = register_pm_notifier(&apm_notif_block);  
  5. if (ret)  
  6. goto out_unregister;  
  7. return 0;  
  8. out_unregister:  
  9. misc_deregister(&apm_device);  
  10. out_stop:  
  11. remove_proc_entry("apm", NULL);  
  12. kthread_stop(kapmd_tsk);  
  13. out:  
  14. return ret;  
  15. }  

 

【編輯推薦】

  1. Linux 查看磁盤空間實現(xiàn)代碼介紹
  2. Linux操作系統(tǒng)需要微軟的十大幫助
  3. 探尋Linux到底需要多低的配置
  4. Linux測試工具tcpdump監(jiān)視TCP/IP連接命令介紹
  5. Linux流量控制實例應用介紹

 

責任編輯:chenqingxiang 來源: IT實驗室
相關推薦

2009-08-31 10:38:34

C#變量初始化

2019-11-04 13:50:36

Java數組編程語言

2010-06-21 10:49:24

Linux APM

2011-03-16 10:52:20

2009-09-07 09:24:26

2023-07-13 09:13:18

Docker容器

2011-06-17 15:29:44

C#對象初始化器集合初始化器

2011-08-16 14:54:12

iphone開發(fā)APP

2011-03-31 16:46:10

LinuxMySQL

2023-11-12 23:08:17

C++初始化

2010-01-05 15:35:21

.NET Framew

2010-02-01 14:21:24

C++初始化列表

2010-08-20 16:02:45

Cassandra集群

2010-02-24 15:41:19

Linux Light

2022-03-21 09:50:50

JavaGroovy映射Map

2022-03-30 08:19:12

JavaGroovy

2010-03-11 19:25:35

Python環(huán)境

2022-11-15 20:48:41

Linux

2023-10-06 20:57:52

C++聚合成員

2009-09-08 09:48:34

LINQ初始化數組
點贊
收藏

51CTO技術棧公眾號