
驱动
zacklin
这个作者很懒,什么都没留下…
展开
-
linux设备驱动归纳总结(三):.阻塞型IO实现
linux设备驱动归纳总结(三):5.阻塞型IO实现xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、休眠简介:进程休眠,简单的说就是正在运行的进程让出CPU。休眠的进程会被内核搁置在在一边,只有当内核再次把休眠的进程唤醒,进程才会会转载 2012-02-03 17:18:51 · 1232 阅读 · 0 评论 -
Linux设备模型(总线、设备、驱动程序和类) (个人认为网上写的层次最清楚的资料)
之一:bus_type 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟"platform"总线。可以通过ls -l /sys/bus看到系统加载的所有总线。drwxr-xr-x root root 1970-01-01 00:02 platformdrwxr-xr-x root root转载 2012-02-17 11:37:00 · 1121 阅读 · 0 评论 -
Linux设备模型之tty驱动架构分析
一:前言Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制 终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题.二:tty驱动概貌Tty架构如下所示:如上图所示,用户空间主要是通过设备文件同tty_c原创 2012-02-15 16:16:15 · 618 阅读 · 0 评论 -
Linux设备驱动模型 sysfs
2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l 代码重复最小化。l 提供诸如引用计数这样的统一机制。l 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l 可以将系统中的全部转载 2012-02-16 09:52:50 · 1754 阅读 · 0 评论 -
Linux设备模型--总线、驱动、设备、设备类
前面的文章分析设备模型中的最基础部分,下面就要更跨入现实,看看如何在这些基础之上构建整个设备驱动子系统。谈到设备驱动,总会涉及到三个概念:总线、驱动、设备。而在Linux中,为了便于用户管理一些功能不同但是使用方式却很接近的设备,开发者们定义了一个设备类的概念。总线?structbus_type { constchar原创 2012-02-15 13:39:55 · 861 阅读 · 0 评论 -
linux 设备模型 补充
Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:http://blog.chinaunix.net/u1/34474/showart_404278.html在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但原创 2012-02-14 14:21:49 · 943 阅读 · 0 评论 -
Linux设备模型第二篇之kobject与kset之间的关系
首先,先看一下kobject与kset的定义:struct kobject {const char *name; //名字struct list_head entry; //作为父对象的链表节点struct kobject *parent; //父对象struct kset *kset; //属于哪个对象集合struct kobj_type *ktype; //对象类型原创 2012-02-13 16:08:48 · 3170 阅读 · 0 评论 -
关于linux设备模型kobject,kset,ktype
一、sysfs文件系统下的每个目录对应于一个kobj,kset是kobj的封装,内嵌了一个kobj,其代表kset自身,ktype代表属性操作集,但由于通用性,因此把ktype单独剥离出来,kobj,kset,ktype成为了各个驱动模型最底层的关联元素,并由此形成了sys下的各种拓扑结构。二、关于kobject 首先看一下kobject的原型转载 2012-02-13 16:01:29 · 1586 阅读 · 0 评论 -
再补充一篇 浅谈 Linux 内核开发之 PCI 设备驱动
本文介绍了 PCI 的基本概念,并从 Linux 内核的角度出发,介绍了 PCI 设备的初始化以及配置。PCI 介绍随着计算机应用的不断更新和发展(比如百兆网卡、视屏流等),计算机内数据传输的带宽要求越来越高,传统内部总线带宽已经远远不能满足这些应用的需要,因此人们推出了 PCI 总线标准PCI 是 Peripheral Component Interconnect 的缩写,它因为高性转载 2012-02-10 09:56:45 · 947 阅读 · 0 评论 -
Linux 读写自旋锁原理
简介: 读写自旋锁是一种特殊的自旋锁,它将访问共享资源的线程区分为读者和写者,多个读者可以同时持有锁,因而提高 了线程的并发性。本系列由三篇文章组成,本文是系列文章的第一部分,以自动机的观点阐述读写自旋锁的原理。后续两篇文章论述如何设计和实现基于简单共享变 量的读写自旋锁,以及针对大规模多核系统讨论如何提高读写自旋锁的可扩展性。读写自旋锁简介什么是读写自旋锁自旋锁(Spinlock转载 2012-02-08 15:30:35 · 3349 阅读 · 0 评论 -
Linux下PCI设备驱动程序开发
一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不转载 2012-02-09 18:08:27 · 874 阅读 · 0 评论 -
信号量的应用场景
1、信号量的定义:struct semaphore {spinlock_t lock;unsigned int count;struct list_head wait_list;};在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。2、信号量的初始化:可用void sema_init(struct semaphore *sem, int v原创 2012-02-07 18:11:41 · 6325 阅读 · 2 评论 -
信号量与线程互斥锁的区别
援引CU上一篇帖子的内容:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同原创 2012-02-07 15:15:09 · 884 阅读 · 0 评论 -
poll, select & poll—wait底层数据结构
阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。在Linux驱动程序中,我们可以使用等待队列(wait queue)来实现阻塞操作。wait queue很早就作为一个基本的功能单位出现在Linux内核里了,它以队列为基原创 2012-02-06 11:55:21 · 3802 阅读 · 0 评论 -
linux wait queue
在Linux驱动程序中,可以使用等待队列(waitqueue)来实现阻塞进程的唤醒。waitqueue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现)。 Linux-2.6提供如下关于等待队列的操作: (1) 定义转载 2012-02-07 10:13:57 · 3740 阅读 · 0 评论 -
Linux内核的同步机制:completion
在Linux内核中,completion是一种简单的同步机制,标志"thingsmayproceed"。要使用completion,必须在文件中包含,同时创建一个类型为structcompletion的变量。这个变量可以静态地声明和初始化:DECLARE_COMPLETION(my_comp);或者动态初始化:struct completion my_comp;init_compl原创 2012-02-07 17:23:19 · 1225 阅读 · 0 评论 -
Linux中的工作队列
工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。I、转载 2012-02-03 11:46:59 · 515 阅读 · 0 评论 -
分析linux make命令与Makefile的区别
make的原理是执行一个叫Makefile文件里的指令,make的基本用处是自动根据makefile里的指令来编译源文件。它还可以用来做比如安装软件,卸载软件等事情,但前提是作者在makefile里写了。比如makefile里有这么些内容: ...install : 然后用make install的话,make程序就会按照上面install:后面的指令执行安装,uninstall也是一样的转载 2012-02-20 15:28:41 · 974 阅读 · 0 评论