相信自己,只有不想做的,没有做不到的。
发布时间:2013-12-12 12:58:57
一,下半部机制task//不能有睡眠,可以响应中断,不接受调度,不能太长1,定义 struct tasklet_struct tlet;2,中断内初始化tasklet_schedule(&dev->tlet);3中断与执行函数想关联/* register the tasklet */ tasklet_init(&globalfifo_devp->tlet, jit_tasklet_fn, (unsigned long)globalfifo_de.........【阅读全文】
发布时间:2013-12-12 12:57:34
//信号量1,定义struct semaphore sem;2,初始化sema_init(&sem,1);3,获得信号量,释放信号量static int hello_open (struct inode *inode, struct file *file){ if(down_trylock(&sem)) return -EBUSY; return 0;}static int hello_release (struct inode *inode, struct fi.........【阅读全文】
发布时间:2013-12-12 12:57:00
//自旋锁1,定义spinlock_t lock;int flag = 1;2,初始化锁 spin_lock_init(&lock);3,加锁解锁static int hello_open (struct inode *inode, struct file *file){ //枷锁 spin_lock(&lock); if(flag == 1) { flag--; //解锁 spin_unl.........【阅读全文】
发布时间:2013-09-24 20:59:47
linux底层驱动的机制*******************11111*********************//原子操作 1,定义并初始化atomic_t V = ATOMIC_INIT(1);静态定义,带初始化2操作static int hello_open (struct inode *inode, struct file *file){ if(atomic_dec_and_test(&V))//先V --,判断V == 0 ; { return 0;.........【阅读全文】
发布时间:2013-09-24 20:13:42
LED驱动#include #include #include #include #include #include #include #include "led.h" //外部引用头文件包含int led_major = 250;//主设备号int l.........【阅读全文】