linux内核
文章平均质量分 79
JansonZhe
这个作者很懒,什么都没留下…
展开
-
Linux内核:container_of宏分析
我们在编写驱动程序的时候,会经常在open函数中用到container_of宏,那么这个在linux内核中这个宏的主要作用是什么呢?原创 2015-08-07 18:57:26 · 771 阅读 · 0 评论 -
Linux内核:通过wait_event和wake_up内在机制分析等待队列
等待队列在linux内核中,等待队列是一个非常重要的概念,也是一个非常重要的机制。我们会在很多函数当中用到等待队列的知识,例如completion机制、wait_event机制等等。在解释这些机制之前,我们首先要弄清楚什么是等待队列。原创 2015-08-07 16:27:22 · 7316 阅读 · 1 评论 -
Linux内核:进程基础之进程ID与管理
Linux系统中的每一个进程都有一个唯一的标示——PID(Process ID),也叫进程ID。给每一进程设置一个标示的主要作用便是方便Linux系统管理数量庞大的进程,例如进程间的通信、判断子父进程、通过进程ID找到进程的task_struct等等,都需要使用到我们的进程ID。我们已经知道每一个进程都会有一个唯一的task_struct结构体来关联该进程相关的数据和结构体。Linux 内核所原创 2015-08-20 16:10:27 · 3101 阅读 · 2 评论 -
基于V4L2驱动程序的USB摄像头Android(JNI)的编写(三)
在上两篇文章基于V4L2驱动程序的USB摄像头Android(JNI)的编写(一)和基于V4L2驱动程序的USB摄像头Android(JNI)的编写(二)中,我详细介绍了如何配置V4L2的环境、设置捕获视频数据的格式,以及视频流数据捕获的过程。但是由于我们捕获到的视频数据是YUYV422格式的,那么在这一篇文章中,我将主要介绍如何将YUYV422格式的数据转换成ARGB格式的数据,同时将ARGB格原创 2015-08-11 10:27:44 · 3499 阅读 · 1 评论 -
Linux内核:seek机制
在我们编写CC1100驱动程序和倒车雷达驱动程序的时候,我们都用到了当前读取数据标志位,即我们在驱动程序中会定义一个容器用来存放数据,每一次我们读完一个数据时,我们都会将我们的读数据变量加1,这样下一次再来读取数据的时候就不会读到以前的数据了,都会是全新的数据。当然这个方法是我们自己在编写驱动程序时候自己定义的。是否在Linux内核中本来就有这样的机制呢?答案是肯定的。这个机制就是seek机制,那原创 2015-09-19 16:53:26 · 4589 阅读 · 0 评论 -
Linux内核:中断、软中断、tasklet
在之前我所写的Linux驱动程序中,会经常使用到中断机制,像CC1100高频驱动、倒车雷达驱动等等。但所用到的中断机制都基本上是用到中断的顶半部,即:编写中断处理函数,通过request_irq函数申请中断,这样当中断来临的时候,就会自动执行中断处理程序里面的内容。之所以没有使用到中断的底半部,是因为我们这些驱动程序中,中断处理函数一般都能被很快执行完,同时也不会存在有任何休眠的动作,因此使用中断原创 2015-09-28 16:21:24 · 3054 阅读 · 0 评论 -
Linux内核:工作队列
在我的上一篇文章Linux内核:中断、软中断、tasklet中,我们已经了解了中断底半部的两种实现方式,即软中断和tasklet微线程。但是这两种方式归根结底都是采用软中断机制的,其根本上还是在中断的上下文中执行,所以这也就要求了采用这两种方式编写中断底半部,不能出现一些可能导致程序休眠或者是延迟的函数(虽然当发生中断嵌套时会生成Ksoftirq线程,但这个是不确定的,所以我们在编写程序时,还是不原创 2015-10-02 10:26:21 · 5304 阅读 · 0 评论 -
Linux字符设备驱动和杂项设备驱动对比
初学Linux驱动程序的时候,可能对什么是字符设备驱动(char device)和杂项设备驱动(misc device)并不是很了解,更谈不上如何区分了。我自己当初在学习Linux字符设备驱动的时候,也并没有特地去了解其两者之间的区别,尤其是在两种驱动设备注册的时候,没有意识到其不同之处,导致后来在项目中出现了很严重的问题,但却迟迟到找不到解决方案。所以今天就趁这个机会,好好分析一下两者之间的区别原创 2016-01-22 16:43:25 · 6306 阅读 · 2 评论 -
Linux内核:poll机制
在编写驱动程序的过程当中我们可以使用poll机制来非阻塞的打开我们的设备文件,我们知道,在之前我们编写CC1100的驱动程序以及倒车雷达的驱动程序的时候,在read函数中都有用到过wait_event_interruptible_timeout这个函数,这个函数的主要作用就是采用非阻塞的read,因为每一次我们read函数的时候,都会先判断是否有新的数据可以读,如果没有新的数据就会休眠等待有新的数原创 2015-09-19 16:20:20 · 9060 阅读 · 0 评论