linux --- 一切皆文件
发布时间:2013-10-14 14:42:45
1:首先input_allocate_device()申请一个input_dev结构体2:struct input_dev{const char *name; 设置input设备的名称unsigned long evbit[BITS_TO_LONGS(EV_CNT)];设置input事件的类型,基于数组bitmap表unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];设置这个类型的行为,基于数组的bitmap表};初始化struct.........【阅读全文】
发布时间:2013-10-13 17:31:20
中断下班部有三种方法实现:1:软中断2:tasklet,tasklet软中断执行的一个链表,是由中断实现的3:workqueue,工作队列是由内核线程实现的总体来说,tasklet的效率比workqueue高,因为tasklet工作的中断上下文,但是不能有睡眠而workqueue则是工作在进程上下文,可以存在睡眠操作。1:软中断 一般不推荐使用需要咋.........【阅读全文】
发布时间:2013-10-13 00:20:41
atomic_t原子操作spinlock_t自旋锁mutex_t互斥量semaphore信号量*临界区(critical region)访问要保护的变量的代码段,称为临界区。临界区中同一时间只能一个人进入。临界区的代码可能分散在不同的函数中。如果要对临界区加锁,则必须保证在临界区的所有部分都加锁。如果有遗漏,则加锁是不可靠的。*同.........【阅读全文】
发布时间:2013-10-12 22:00:08
内核时间:1:tick:1 tick = 1/HZ秒HZ是在make menuconfig里配置的,.config中的CONFIG_HZ,6410设置的是200,其他取值一般为:100,200,250,300,1000,范围是100-10002:相对时间jiffiesjiffies记录着从开机到当前所经过的tick时间,在硬件定时器中断处理函数中对jiffies进行++jiffies是 unsigned long 类型.........【阅读全文】
发布时间:2013-10-11 22:58:48
首先说下如果在裸机的情况下硬件中断是如何到来的:首先中断有内部中断和外部中断两种,中断一共有64个中断源1:内部中断的中断银角是直接和VIC(向量中断控制器)相连的,一个中断占用一个中断源,比如:wdt、网卡等设备程序可以直接通过中断控制器中存放的中断处理函数来执行,因为某个内部中断号产生的源头是唯一的,.........【阅读全文】