- 博客(8)
- 收藏
- 关注
原创 插入usb之后发生了什么
源码赏析小实验/** 这个函数做了两件事情: 1 : 注册hub驱动 2 : 创建名为"khubd"的守护线程,它的作用是检测hub的状态变化。*/int usb_hub_init(void){ /** usb hub也是usb设备。驱动的注册和usb设备驱动的注册方式是一样的。 该函数最终是 :如果
2016-01-12 21:33:32 1748
原创 alsa子系统 <一>
入口函数static int __init alsa_sound_init(void){ //116 snd_major = major; snd_ecards_limit = cards_limit; /** 注册一个字符设备,主设备号为116. 这里设计的和input.c(input子系统的核心层)类似。 snd_
2016-01-12 20:33:23 1178
原创 中断子系统 <一>
源码欣赏/** 三个重要的数据结构: irq_desc 、irq_chip 、irqaction 这个函数主要做了两件事情: 1 : 根据传入的参数构建一个irqaction,并把这个irqaction添加到irq_desc的action链表 2 : 做一些初始化的工作,如: 设置中断触发方式、开启中断..............
2016-01-11 22:26:57 890
原创 等待队列 赏析
/** 如果被一个信号打断了,那么该函数将会返回-ERESTARTSYS*/#define wait_event_interruptible(wq, condition) \({ \ int __ret = 0; /** 如果condition为false,
2016-01-10 21:40:42 885
原创 内核工作队列 赏析
queue_work/** 向工作队列提交新的工作节点。*/int queue_work(struct workqueue_struct *wq, struct work_struct *work){ int ret; //调用了这个函数 ret = queue_work_on(get_cpu(), wq, work); put_cpu(); re
2016-01-10 13:03:32 1210
原创 I2C的一些函数赏析
i2c总线先来一张g-sensor原理图 struct bus_type i2c_bus_type = { .name = "i2c", .match = i2c_device_match, /** 总线上提供了probe, 根据前面博文的浅析,匹配成功后,会优先调用总线提供的这个probe将会被调用。
2016-01-09 18:24:04 3673 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人