
linux驱动
公子烨
What are you prepare to do!
展开
-
中断处理的tasklet(小任务)机制和workqueue(工作队列)机制
一、中断处理的tasklet(小任务)机制中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,Linux内核的目标就是尽转载 2011-10-10 16:55:59 · 621 阅读 · 0 评论 -
softirq原理以及源码分析
Linux 的softirq机制是与SMP紧密不可分的。为此,整个softirq机制的设计与实现中自始自终都贯彻了一个思想:“谁触发,谁执行”(Who marks,Who runs),也即触发软中断的那个CPU负责执行它所触发的软中断,而且每个CPU都由它自己的软中断触发与控制机转载 2011-10-10 21:35:33 · 1077 阅读 · 0 评论 -
Linux 内核驱动--阻塞与非阻塞机制及Poll/Select分析if
阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。在Linux驱动程序中,我们可以使用等待队列(wa转载 2011-10-09 19:17:40 · 1373 阅读 · 0 评论 -
Linux内核中的同步机制
Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例 一、引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多转载 2011-10-09 12:31:25 · 437 阅读 · 0 评论 -
设备驱动的异步通知实现
主要实现思路是:设备I/O驱动如果准备好数据(用户可读或者可写),向用户进程发送信号,用户进程收到信号后调用相关的信号处理函数对设备的数据进行访问。实现上述的思路需要两方面的实现:用户程序的实现、设备驱动程序的实现。 用户程序的实现需要:(1) 设置执行用户程序的转载 2011-10-10 13:08:21 · 598 阅读 · 0 评论 -
解析:signal_pending与返回-ERESTARTSYS
经常我们在睡眠的代码中 会看到这样的例子: if (signal_pending(current)) { ret = -ERESTARTSYS; return ret; } 关于 -ERESTARTSYS转载 2011-10-09 18:38:37 · 4434 阅读 · 0 评论 -
字符驱动小例子解析
1. MODULE_LICENSE ("GPL");int hello_major = 250;int hello_minor = 0;int number_of_devices = 1;char data[50]="foobar not equal to b原创 2011-10-08 20:32:31 · 3717 阅读 · 0 评论 -
Linux设备驱动之I2C架构分析
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员 的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以转载 2011-10-16 15:54:29 · 820 阅读 · 0 评论 -
驱动模块Makefile解析
ifeq ($(KERNELRELEASE),) KERNELDIR ?= /home/linux/linux-2.6.22.6 PWD := $(shell pwd) modules: $(转载 2011-10-08 12:55:15 · 394 阅读 · 0 评论 -
module_param&&MODULE_PARM_DESC
module_param()理解-------------------------------------------在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()module_param()宏是Linux转载 2011-10-08 12:56:33 · 2104 阅读 · 0 评论 -
Linux I2C驱动源码分析(一)
内核版本:2.6.31.6 首先在S3C2440平台的初始化函数中,主要是将开发平台的设备注册进了系统,也就是将device注册到了platform虚拟的总线上,并进行了一些初始化的工作,这里我们只关注I2C的部分。 static void __init smdk转载 2011-10-14 19:31:39 · 728 阅读 · 0 评论 -
Linux设备模型之input子系统详解(second)
七:evdev概述 Evdev对应的设备节点一般位于/dev/input/event0 ~ /dev/input/event4.理论上可以对应32个设备节点.分别代表被handler匹配的32个input device.可以用cat /dev/input/event0.然转载 2011-10-14 19:16:27 · 787 阅读 · 0 评论 -
Linux设备模型之input子系统详解
------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------转载 2011-10-14 19:14:09 · 406 阅读 · 0 评论 -
Linux文件系统之sysfs
原文地址:Linux文件系统之sysfs 作者:xgr180------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/转载 2011-10-10 18:59:26 · 929 阅读 · 0 评论 -
解析 Linux 中的 VFS 文件系统机制
本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实转载 2011-10-14 19:04:43 · 409 阅读 · 0 评论 -
Linux I2C驱动源码分析(二)
下面开始分析linux/drivers/i2c/busses/i2c-s3c2410.c,在设备与驱动匹配成功后,会执行s3c24xx_i2c_probe()函数,其源码如下:/* s3c24xx_i2c_probe called by the bus driver when转载 2011-10-14 19:33:28 · 951 阅读 · 0 评论 -
linux 触摸屏驱动分析
mini2440驱动分析系列之---------------------------------------Mini2440触摸屏程序分析By JeefJiang July,8th,2009这是mini2440驱动分析系列的第三篇文章,本文分为三个部分,第一部分讲叙硬转载 2011-10-14 18:41:49 · 665 阅读 · 0 评论 -
set_irq_type() -- 设置中断触发类型/方式
linux-2.6.21.7/kernel/irq/chip.c------------------------------------------------/*** set_irq_type - set the irq type for an irq*转载 2011-10-11 19:50:51 · 10411 阅读 · 0 评论