linux
文章平均质量分 78
citycity222
这个作者很懒,什么都没留下…
展开
-
mmap详解
mmap功能描述: mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引转载 2012-01-17 14:34:44 · 404 阅读 · 0 评论 -
Android Camera HAL浅析
http://blog.csdn.net/crycheng/article/details/7780471转载 2012-08-21 16:47:52 · 441 阅读 · 0 评论 -
ubuntu 下 驱动开发环境
本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程 很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。所谓内核树,我的理解和网上资料说的一致就是内核源转载 2012-10-17 22:36:08 · 503 阅读 · 0 评论 -
Andriod编译内核模块*.ko
在单独编译Android的内核模块之前,必须要成功配置编译过整个Android系统(至少要编译成功boot.img),生成正确的out目录。1.编写Makefile。按照以下格式编写Makefile。 1 obj-m += aaa.o 2 #obj-m += abc.o 3 #abc-objs := aaa.o bbb.o ccc.o 4 5 K转载 2012-10-17 22:36:46 · 509 阅读 · 0 评论 -
linux内核wait_queue深入分析
前几天在看驱动的时候碰到了等待队列,上网去搜了一下,再结合代码看了一下,深有体会.在 kernel 里,wait_queue 的应用很广,举凡 device driver,semaphore 等方面都会使用到 wait_queue 来 implement。所以,它算是 kernel 里蛮 基本的一个数据结构。首先,我们得明白,linux中的所有的进程都由task_struct这个结构管理。转载 2013-08-11 15:43:29 · 518 阅读 · 0 评论 -
select(poll)系统调用实现解析(二)
二、重要结构体之间关系 比较重要的结构体由四个:struct poll_wqueues、struct poll_table_page、struct poll_table_entry、struct poll_table_struct,这小节重点讨论前三个,后面一个留到后面小节。 2.1、结构体关系每一个调用select()系统调用的应用进程都会存在一个struc转载 2013-08-11 15:41:48 · 628 阅读 · 0 评论 -
深入理解l内核v4l2框架之video for linux 2(一)
在看了很多关于v4l2驱动的例程之后,想深入研究下linux内核的v4l2框架,顺便把这些记录下来,以备查用。Video for Linux 2 随着一些视频或者图像硬件的复杂化,V4L2驱动也越来越趋于复杂。许多硬件有多个IC,在/dev下生成多个video设备或者其他的诸如,DVB,ALSA,FB,I2C ,IR等等非V4L2的设备。所以,V4L2驱转载 2013-08-25 22:31:09 · 688 阅读 · 0 评论 -
深入理解l内核v4l2框架之video for linux 2(二)
续。。。3、video_devicestruct video_device{#if defined(CONFIG_MEDIA_CONTROLLER)struct media_entity entity;#endifconst struct v4l2_file_operations*fops;struct device dev; /*转载 2013-08-25 22:31:53 · 584 阅读 · 0 评论 -
设备节点、设备驱动及设备的关联
这章将介绍Linux系统的设 备,这样我们才能清楚的知道应用程序和设备驱动程序是如何的工作的,或者说应用程序是如何控制驱动程序的,进而知道应用程序是如何通过驱动程序操作设备 的,另外会详细的介绍设备号及设备文件。 Linux设备分类Linux下的设备通常分为三类,字符设备,块设备和网络设 备。字符设备一个字符设 备是一种字节流设备,对设备的存取只能按顺序按字节的转载 2013-08-18 15:49:42 · 812 阅读 · 0 评论 -
SCULL简单字符设备驱动
SCULL简单字符设备驱动试验环境: Fedora8+ 2.6.23 内核+vim7.1+lxr Server联系方式:4bsfreedom$gmail.com(替换 $ 为 @ )(不知如何上传附件,相关资料包括源码可发邮件向我索取)2008年01月28日 序言 我的《Linux Device Driver》(简称LDD)读书笔记,这篇文章因为我贪玩,明显转载 2012-07-30 00:17:17 · 1181 阅读 · 0 评论 -
讲讲volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic转载 2012-08-09 11:17:48 · 485 阅读 · 0 评论 -
Linux IPC 之:UNIX Domain Socket
ocket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进转载 2012-01-06 12:40:08 · 764 阅读 · 0 评论 -
获取fd指向的文件
使用函数:readlink相关函数: stat, lstat, symlink 表头文件: #include 定义函数:int readlink(const char *path, char *buf, size_t bufsiz); 函数说明:readlink()会将参数path的符号连接内容存储到参数buf所指的内存空间,返回的内容不是以\000作字符串结尾,但会将字符原创 2012-02-28 10:23:44 · 567 阅读 · 0 评论 -
什么是文件描述符
文件描述符标志? 文件描述符是 Unix 系统内核中用于表示特定进程打开的特定文件的方式,通常是一个 int 类型的变量。当进程打开一个文件的时候,内核生成一个文件描述符,传递给调用进程;当进程需要操作这个文件的时候只要向内核传递这个描述符,内核就可以找到对应的文件执行响应操作 1. 文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。文转载 2012-01-07 13:54:48 · 834 阅读 · 0 评论 -
linux中fork()函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进转载 2012-01-05 23:59:10 · 610 阅读 · 0 评论 -
Linux线程池
Linux下通用线程池的创建与使用本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。 为什么需要线程池目前的大多数网络服务器,包括Web服务转载 2012-06-29 16:48:58 · 475 阅读 · 0 评论 -
线程同步之利器(1)——可递归锁与非递归锁
概述最常见的进程/线程的同步方法有互斥锁(或称互斥量Mutex),读写锁(rdlock),条件变量(cond),信号量(Semophore)等。在Windows系统中,临界区(Critical Section)和事件对象(Event)也是常用的同步方法。 简单的说,互斥锁保护了一个临界区,在这个临界区中,一次最多只能进入一个线程。如果有多个进程在同一个临界区内活动,就有可能产生竞态条件转载 2012-07-02 15:21:13 · 522 阅读 · 0 评论 -
线程同步之利器(2)——区域锁(Scoped locking)
什么是区域锁确切的说,区域锁(Scoped locking)不是一种锁的类型,而是一种锁的使用模式(pattern)。这个名词是Douglas C. Schmidt于1998年在其论文Scoped Locking提出,并在ACE框架里面使用。但作为一种设计思想,这种锁模式应该在更早之前就被业界广泛使用了。区域锁实际上是RAII模式在锁上面的具体应用。RAII(Resource Acquis转载 2012-07-02 15:51:02 · 434 阅读 · 0 评论 -
Linux 多线程应用中如何编写安全的信号处理函数
Linux 多线程应用中编写安全的信号处理函数在开发多线程应用时,开发人员一般都会考虑线程安全,会使用 pthread_mutex 去保护全局变量。如果应用中使用了信号,而且信号的产生不是因为程序运行出错,而是程序逻辑需要,譬如 SIGUSR1、SIGRTMIN 等,信号在被处理后应用程序还将正常运行。在编写这类信号处理函数时,应用层面的开发人员却往往忽略了信号处理函数执行的上下文背景,没转载 2012-07-03 15:27:53 · 536 阅读 · 0 评论 -
select(poll)系统调用实现解析(一)
上层要能使用select()和poll()系统调用来监测某个设备文件描述符,那么就必须实现这个设备驱动程序中struct file_operation结构体的poll函数,为什么?因为这两个系统调用最终都会调用驱动程序中的poll函数来初始化一个等待队列项, 然后将其加入到驱动程序中的等待队列头,这样就可以在硬件可读写的时候wake up这个等待队列头,然后等待(可以是多个)同一个硬件设备可读转载 2013-08-04 16:16:34 · 525 阅读 · 0 评论