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

Linux键盘驱动范例

键盘在所有的驱动之中最为简单的一种,但它却包含了驱动的基本框架,对以后继续深入学习其他复杂的驱动大有裨益,以下便为你逐步剖析驱动的开发。采用的是查询方式。转载请注明出处:qiangren.blog.edu.cn 
一.内核模块的注册和撤销
在加载模块的时候,首先运行的是内核模块的注册函数。它的功能包括内核注册设备以及变量的初始化。
static int head,tail;
int  _init Keypad_init(void)
{
     int result;
     result=register_chrdev(KEY_LED_MAJOR,KEY_LED_NAME,&Keypad_fops);
     Keypad_clear();
     init_waitqueue_head(&queue);
     prink("%s %s initialized.\n",KEY_LED_NAME,KEY_LED_VERSION);//不能用prinf
     return 0;
}
module_init(Keypad_init);//加载模块
void _exit Keypad_cleanup(void)
{
     del_timer(&timer);
     unregister_chrdev(KEY_LED_MAJOR,KEY_LED_NAME);
     prink("Keypad driver removed \n");
}
module_exit(Keypad_cleanup);//卸载该模块
二.虚拟文件系统与硬件驱动的接口
static struct file_operations Keypad_fops={
open:Keypad_open,
read:Keypad_read,
poll:Keypad_poll,
fasync:Keypad_fasync,
release:Keypad_release,
};
该接口定义完之后一些便是对这几个具体函数的实现了!现在我们一起进入下一步吧,是不是觉得其实没什么难度的呢?别那么早开心着呢?这几个函数的实现时候,涉及到很多技术,包括内核定时器,*等待队列的具体实现(阻塞方式),异步方式的具体实现技巧,循环队列。看到这么多技术你是否感到很兴奋呢?以下本人将以通俗的方式为你讲解,希望你能理解。
三.设备的打开操作接口函数具体实现(Keypad_open)
设备打开一般包括两大操作,一是完成设备的初始化,二是设备引用计数器加1
static int Keypad_open(struct inode *inode,struct file *filp)
{
     read_xy();
     try_module_get(THIS_MODULE);//此函数为Linux 2.6内核增加的,不同于2.4内核,功能是计数器的值加1
     return 0;
}
static void read_xy(void)
{
  &nbs


相关文档:

JPEG图形库:libjpeg,在LINUX下如何将jpg转换成bmp


    近来需要写一个在LINUX下的图形文件处理程序,最开始只支持BMP格式,后来要求也处理JPG。急得抓头啊,以前可没认真研究过JPG…………
    在网上找到了libjpeg,可以用这个库实现JPG图片的各种操作:
    下载:http://freeware.sgi.com/sou ......

linux 递归查找文件内容

递归查找文件内容:
grep   -n   -ri   "slewing"   ./
在当前目下递归查找所有的文件
       -i, --ignore-case
              Ignore  case  distinctions  ......

linux convert图像处理命令

 几个简单的应用。
  1、批量图像格式转换
  如果想将某目录下的所有jpg文件转换为png文件,只要在命令行模式下输入:
  for %f in (*.jpg) do convert “%f” “%~nf.png”
  2、对所有图像进行同一操作
  譬如,批量生成某目录下所有PNG图像文件的缩略图(大小为80×40):
  fo ......

linux tasklet 4

引用 2 楼 cokeliu 的回复:
谢谢! 请问是否每调用一次tasklet_schedule(B task); B task任务被加到链表上只会被执行一次?
是的,只被加一次
第一次tasklet_schedule(B task)给他一个状态TASK_STATE_SCHED
作标记,以后的tasklet_schedule(B task)会检查这个标记
http://os.inf.tu-dresden.de/l4env/doc/html/dde_linux ......

Linux中的工作队列 (2.6.0~2.6.19 and 2.6.20 ~ now)

http://blog.chinaunix.net/u2/69889/showart_971040.html
Linux中的工作队列
[前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。
********************************** ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号