- 博客(7)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 linux中断子系统 - irq_desc的创建
irq_desc的代码主要在kernel/irq/irqdesc.c中 linux4.6.3 1.irq_desc组织方式irq_desc在内核中有两种组织方式,这是根据宏CONFIG_SPARSE_IRQ是否定义来决定的,这两种方式分别是:(1)radix-tree方式,这是以基数树的方式来组织irq_desc (2)数组的方式 ,前面的文章介绍irq结构时,就是用此方
2016-10-31 22:33:59 6252 1
原创 linux中断子系统 - 申请中断
1.申请中断APIextern int __must_checkrequest_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long flags, const char *name, void *dev);stati
2016-10-25 22:47:57 1255
原创 linux中断子系统 - 中断及执行流程
linux中断子系统系列文章计划总共由5篇文章组成,本篇会通过中断的执行流来整体介绍一下中断,并引出其他文章的内容简介,中断的代码基本在kernel/irq目录下,中断控制器的代码在drivers/irqchip目录下 内核版本linux4.6.3 中断相关结构体介绍通过参照一下ULK3的IRQ描述符图,本图描述了linux4.6.3版本中断中各个结构体所代表的对象,str
2016-10-23 18:25:36 4712
原创 linux工作队列 - work_struct被调用过程
work_struct被调用在函数worker_thread中进行,代码如下:static int worker_thread(void *__worker){ struct worker *worker = __worker; struct worker_pool *pool = worker->pool; /* tell the scheduler that this i
2016-10-17 22:02:38 3508
原创 linux工作队列 - 把work_struct加入工作队列
把work_struct加入到工作队列workqueue的API在系列文章1有介绍,这些API虽然用法不一,但是最终都会调用__queue_work()函数来进行实际加入操作,比如API:queue_work_on:bool queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work)
2016-10-16 22:53:23 4826
原创 linux工作队列 - workqueue_struct创建
1.创建workqueue代码分析1.1整体代码分析根据FLAG的不同,创建workqueue的API分好几种(见系列文章1说明),根据情况使用,但最终这些API都会调用到alloc_workqueue,这是一个宏定义,它的调用序列图如下所示:这里重点介绍函数alloc_and_link_pwqs(),wq在此函数中创建:static int alloc_and_link_pwqs(struct w
2016-10-16 19:27:20 5436
原创 linux工作队列 - workqueue总览
workqueue归入中断子系统是由于和中断处理有密切关系,写博客重要在于整理自己的思绪,写的时候会把一些不懂的细节问题暴露出来,这样会把问题看的更透彻,workqueue的代码在文件kernel/workqueue.c中,大约5K+行,本文基于linux 4.6.3编写,由于能力有限,本文介绍不全面或者理解有误之处还请见谅,欢迎指正一起探讨。文章系列1.linux工作队列 - workqueue
2016-10-15 18:17:28 13226
Open Firmware Recommended Practice: Interrupt Mapping Version 0.9
2016-06-28
CMake Practice
2016-05-29
Java基本语法问题
2022-02-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人