![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动学习笔记
jerry_chg
努力 奋斗
展开
-
kernel panic 分析解决方法
kernel panic 表示Linux kernel走到了一个不知道该怎么走下一步的状况,一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息。 下面讲解几种用于查找出错函数定位的方法首先看一下出错的kernel panic 现象,下面是一个kernel panic的出错log:原创 2014-02-13 21:33:34 · 33642 阅读 · 1 评论 -
linux中断底半部之 softirq 原理与代码分析
Linux softirq一、 软中断产生的原因软中断:用于有效的实现内核的延期操作,也是底半部机制tasklet的基础二、 数据结构1)softirq_action该结构是软中断的核心数据结构,代表软中断处理函数。struct softirq_action{void (*action)(struct softirq_action *);};2)下面原创 2013-10-12 21:44:04 · 6259 阅读 · 0 评论 -
linux 中断底半部之tasklet分析
Linux tasklet study一、 tasklet作用二、 tasklet相关的数据结构struct tasklet_struct{struct tasklet_struct *next;unsigned long state;atomic_t count;void (*func)(unsigned long);unsigned long data;原创 2013-10-12 21:45:27 · 3503 阅读 · 0 评论 -
powerpc 、mips访问I/O方式的比较
对于powerpc,并没有提供I/O空间,仅有内存空间,所以对各种外设寄存器的访问,都需要将该寄存器对应的的物理地址转换成虚拟内存地址后,才能实现对各种外设的访问,用于实现物理地址到虚拟内存转换的函数为ioremap(unsigned long physaddr, unsigned long size)其中physaddr:表示外设寄存器对应的物理地址size:表示需要映射的范围原创 2013-06-22 11:18:36 · 1788 阅读 · 0 评论 -
linux内核下等待队列的使用
1、wait_queue的使用 需要的头文件#includetypedef struct __wait_queue wait_queue_t;struct __wait_queue {unsigned int flags;#define WQ_FLAG_EXC原创 2011-08-29 19:30:20 · 1001 阅读 · 0 评论 -
linux powerpc i2c驱动 之 i2c设备层的注册过程
Linux下i2c驱动的加载过程,分为i2c设备层、i2c adapter层与i2c核心层i2c设备驱动层也就是我们为特定i2c设备编写的驱动,下面是我自己理解的i2c驱动的注册过程在我们写的i2c设备驱动中,我们会调用i2c_add_driver()开始i2c设原创 2011-08-16 19:40:39 · 4391 阅读 · 2 评论 -
linux powerpc i2c驱动 之 i2c adapter层的注册过程
I2c的adapter层驱动,首先是其probe函数,adapter的结构体如下:上面的结构体中其中algo实现i2c设备的读写操作函数对于i2c_algorithm结构体,其中的functionality用来说明该算法所支持的i2c模式(有I2C_FUNC_原创 2011-08-18 18:42:18 · 2939 阅读 · 0 评论 -
linux 内核定时器的使用
定时器有关的头文件:#include#include与定时器有关的结构体:struct timer_list {struct list_head entry;unsigned long expires;//定时间隔 jiffies+dela原创 2011-08-15 19:36:44 · 1801 阅读 · 0 评论 -
linux 内核通知链
概述:内核的各子系统之间具有较强的相互依赖性,因此一个子系统中侦测或者发生的事件,其他子系统可能感兴趣,所以linux使用通知链实现这种交互。通知链仅存在于各内核子系统中,内核与用户层的交互使用其他机制。1、 主要数据结构:struct notifier_block {int (*notifier_call)(struct notifier_block *, unsig原创 2013-08-03 16:18:41 · 1515 阅读 · 0 评论