Linux设备驱动
文章平均质量分 54
鸭梨小乖宝宝
这个作者很懒,什么都没留下…
展开
-
poll和select
使用非阻塞I/O的应用程序也经常使用poll、select和epoll系统调用。Poll 、epoll和select功能本质上是一样的:都允许进程决定是否可以对一个或多个打开的文件做非阻塞的读取或写入。这些调用也会阻塞进程,直到给定的文件描述符集合中的任何一个可读取或写入。因此,常常用于那些要使用多个输入或输出流而又不会阻塞于其中任何一个流的应用程序中。所有三个系统调用都通过驱动程序的poll原创 2013-08-18 21:19:58 · 459 阅读 · 0 评论 -
并发和竞态
并发和竞态1. 并发及其管理竞态通常作为对资源的共享访问结果而产生。当两个执行线程需要访问相同的数据结构(或硬件资源)时,混合的可能性就永远存在。因此在设计自己的驱动程序时,第一个要记住的原则是,只要可能,就应该避免资源的共享。如果没有并发的访问,也就不会有竞态的产生。因此,仔细编写的内核代码应该具有最少的共享。这种思想的最明显应用就是避免使用全局变量。2.原创 2013-08-18 09:40:57 · 727 阅读 · 0 评论 -
进程的一些理解
进程的堆栈:每个进程都有自己的堆栈,内核在创建一个新的进程是,在创建进程控制块task_struct的同时,也为进程创建自己的堆栈,一个进程有2个堆栈:用户堆栈、系统堆栈(内核堆栈)。用户堆栈和内核堆栈的切换:当进程由于中断或系统调用从用户态到内核态时,进程所用的栈也要从用户堆栈切换到内核堆栈。系统调用实质就是通过指令产生中断,成为软中断。进程因为中断(软中断或硬件产生中断)使得CPU切换到特原创 2013-08-20 20:36:15 · 404 阅读 · 0 评论 -
嵌入式根文件系统的一些理解
什么是文件系统?文件系统是对一个存储设备上的数据和元数据进行组织的机构,利于用户和操作系统的交互。什么是根文件系统?根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,特殊之处在于,它是内核启动时所mount(挂载)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后,从中把一些初始化脚本和服务加载到内存中去运行。原创 2013-08-20 20:34:44 · 814 阅读 · 0 评论 -
Linux进程阻塞的相关知识
1.如果驱动程序无法立即满足要求,该如何响应?当数据不可用时,用户可能调用read;或者进程试图写入数据,但因为输出缓冲区已满,设备还未准备好接受数据。调用进程通常不会关心这类问题,程序员只会简单调用read和write,然后等待必要的工作结束后返回调用。因此,在这种情况下,我们的驱动程序应该(默认)阻塞该进程,将其置入休眠状态直到请求可继续。2.“休眠(sleep)”对进程来讲意味着什么原创 2013-08-18 20:26:24 · 1647 阅读 · 0 评论 -
嵌入式、Linux和UNIX的认识
嵌入式、Linux和UNIX的认识嵌入式系统的嵌入性的本质是将一个计算机嵌入到一个对象体系中去,实现对象体系的智能化控制。嵌入式技术趋势分析:更高主频、更低功耗、超大集成度、超小体积两大阵营:l 通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。l 嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系原创 2013-08-20 20:29:05 · 1574 阅读 · 0 评论 -
时钟与中断
1. 所谓中断是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。根据中断的来源,中断可分为内部中断和外部中断,内部中断的中断源来自CPU内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助CPU内部的软件中断),外部中断的中断源来自CPU外部,由外设提出请求。原创 2013-08-20 20:32:18 · 749 阅读 · 0 评论 -
linux设备驱动程序学习笔记(一)
第一章 设备驱动程序简介1.区分机制和策略是Unix设计背后隐含的最好思想之一。大多数编程问题实际上都可以分为两部分:“需要提供什么功能”(机制)和“如何使用这些功能”(策略)。如果这两个问题由程序的不同部分来处理,或者甚至由不同的程序来处理,则这个软件包更易开发,也更容易根据需要来调整。驱动程序同样存在机制和策略的分离问题。例如,软驱的驱动程序不带策略,它的作用是将磁盘表示为一个原创 2013-08-07 18:58:52 · 676 阅读 · 1 评论 -
Linux设备驱动程序(二)
第二章 构造和运行模块Hello World模块#include #include MODULE_LICENSE("Dual BSD/GPL")static int hello_init(void){ printk(KERN_ALERT "Hello,World\n"); return 0;}static void hello_exit原创 2013-08-08 14:37:07 · 538 阅读 · 0 评论 -
异步通知
1. 异步通知在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动程序主动通知应用程序进行访问。这样,使用无阻塞I/O的应用程序无须轮询设备是否可访问,而阻塞访问也可以被类似“中断”的异步通知所取代。异步通知的意思:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”.信号是在原创 2013-08-20 20:35:18 · 549 阅读 · 0 评论 -
Linux ——ioctl详解
实现ioctl系统调用,它是用于设备控制的公共接口。原创 2013-08-18 11:08:13 · 1574 阅读 · 0 评论