易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux设备模型之input子系统详解(一)

------------------------------------------ 
本文系本站原创,欢迎转载! 
转载请注明出处:http://ericxiao.cublog.cn/ 
------------------------------------------ 
一:前言 
在键盘驱动代码分析的笔记中,接触到了input子系统.键盘驱动,键盘驱动将检测到的所有按键都上报给了input子系统。Input子系统是所有I/O设备驱动的中间层,为上层提供了一个统一的界面。例如,在终端系统中,我们不需要去管有多少个键盘,多少个鼠标。它只要从input子系统中去取对应的事件(按键,鼠标移位等)就可以了。今天就对input子系统做一个详尽的分析. 
下面的代码是基于linux kernel 2.6.25.分析的代码主要位于kernel2.6.25/drivers/input下面. 
二:使用input子系统的例子 
在内核自带的文档Documentation/input/input-programming.txt中。有一个使用input子系统的例子,并附带相应的说明。以此为例分析如下: 
#include <linux/input.h> 
#include <linux/module.h> 
#include <linux/init.h> 
  
#include <asm/irq.h> 
#include <asm/io.h> 
  
static void button_interrupt(int irq, void *dummy, struct pt_regs *fp) 

        input_report_key(&button_dev, BTN_1, inb(BUTTON_PORT) & 1); 
        input_sync(&button_dev); 

  
static int __init button_init(void) 

        if (request_irq(BUTTON_IRQ, button_interrupt, 0, "button", NULL)) { 
                printk(KERN_ERR "button.c: Can't allocate irq %d\n", button_irq); 
                return -EBUSY; 
        } 
  
        button_dev.evbit[0] = BIT(EV_KEY); 
        button_dev.keybit[LONG(BTN_0)] = BIT(BTN_0);&n


相关文档:

Linux软件安装与卸载命令

./configure         检查系统信息              
./configure   --help   |   more     帮助信息
make   clean     ......

Linux入门笔记六

磁盘分区工具--fdisk
fdisk /dev/hda
fdisk命令的子命令
-m   显示帮助(命令清单)
-a   激活分区的可引导标志
-l   列出可选的分区类型
-n   添加新分区
-d   删除已经存在的分区
-p   显示分区表
-t   改变分区的文件类型
   ......

linux静态库和共享库

1.什么是库
在windows平台和linux平台下都大量存在着库。
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。
由于windows和linux的本质不同,因此二者库的二进制是不兼容的。
本文仅限于介绍linux下的库。
2.库的种类
linux下的库有两种:静态库和共享库(动态库)。
二者的不同点在于代码被 ......

Linux内核同步

在Linux内核里内存可以和硬盘空间通用的,当内存利用很少时,数据可以存到内存里,反之硬盘空间可以用来当内存用但是有个共同点数据总是现在内存里操作再写回到硬盘上的。由于这个原因,块存储设备被当成后备存储器。
Linux提供了两种操作的方法:
1 后台进程不停的检查系统内存周期性的写操作
2 当系统有太多的脏页需要 ......

Linux kernel 学习笔记(1) 分段分页保护机制

使用80x86处理器进行寻址时牵涉到三种不同的地址,其关系如下所示
逻辑地址------------------->线性地址-------------------------->物理地址
                 (分段)          ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号