首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

文章分类 -  Linux 设备驱动

摘要:1. 头文件#include <linux/sched.h> //wake_up_process()#include <linux/kthread.h> //kthread_create()、kthread_run()#include <err.h> //IS_ERR()、PTR_ERR()2. 实现2.1创建线程在模块初始化时,可以进行线程的创建。使用下面的函... 阅读全文

posted @ 2010-01-24 12:18 放飞自我 阅读(7378) 评论(0) 推荐(0)

摘要:(转载)[前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。*************************************************************************************************... 阅读全文

posted @ 2010-01-24 12:10 放飞自我 阅读(1939) 评论(0) 推荐(0)

摘要:与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs),unsigned long irqflags,const ... 阅读全文

posted @ 2010-01-20 11:46 放飞自我 阅读(5612) 评论(0) 推荐(0)

摘要:时间管理在内核中占有非常重要的地位。相对于事件驱动,内核中有大量的函数都是基于时间驱动的。内核必须管理系统的运行时间以及当前的日期和时间。 周期产生的事件都是由系统定时器驱动的。系统定时器是一种可编程硬件芯片,它已固定频率产生中断。该中断就是所谓的定时器中断,它所对应的中断处理程序负责更新系统时间,还负责执行需要周期性运行的任务。系统定时器和时钟中断处理程序是Linux系统内核管理机制中的中枢。9... 阅读全文

posted @ 2010-01-18 18:06 放飞自我 阅读(2452) 评论(0) 推荐(0)

摘要:(转载)Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。 500)this.width=500;" border=0在这个链表中,有两种数据结构:等待队列头(wait_queue... 阅读全文

posted @ 2010-01-18 18:01 放飞自我 阅读(3709) 评论(0) 推荐(0)

摘要:今天学习了《linux内核设计与实现》的进程调度一章,总结一下自己的体会。第一点: 进程调度主要分为I/O消耗型和处理器消耗型。从字面意思我们可以了解到他们的不同,一种主要是用于I/O操作,另一种是主要运行代码的过程。第二点: Linux对进程分配了优先级。1. nice值,应该是静态的。-20到+19,默认是0,值越大优先级越小。2. 另一种是实时的优先级,从0到99第三点: 时间片,内核给每个... 阅读全文

posted @ 2010-01-18 11:04 放飞自我 阅读(431) 评论(0) 推荐(0)

摘要:代码分为:makefile ,内核态程序 globalmem.c 用户态程序 user.c 功能是把一个数组排序,你也可以使用 read write函数往内存里写东西。运行方法:  make,产生globalmem.ko文件, Insmod globalmem.ko , 看一下 dmesg -c 是否有提示信息(也可以 lsmod | grep "glo"), 有的话说明加载上了,然后 mknod... 阅读全文

posted @ 2009-11-25 22:26 放飞自我 阅读(556) 评论(0) 推荐(0)

摘要:1. 整型原子操作原子变量是对原子变量的整型操作和位操作不被打断(c 语言和普通的内存变量达不到这项要求),是作为计数器和标志变量的良好解决方法。优点:简单,缺点:太简单,只能做计数操作,保护的东西太少,不过确实其他同步手段的基石。a.原子变量的定义typedef struct { volatile int counter;} atomic_t;定义原子变量需使用 atomic_t 结构来定义,v... 阅读全文

posted @ 2009-11-25 10:59 放飞自我 阅读(862) 评论(0) 推荐(1)

摘要:1. 字符设备驱动模块加载与卸载函数模板//设备结构体声明struct xxx_dev_t{ struct cdev cdev; …….}xxx_dev;//设备驱动模块加在函数static int __init xxx_init(void){ ……… cdev_init(&xxx_dev.cdev, &xxx_fops)... 阅读全文

posted @ 2009-11-24 21:16 放飞自我 阅读(438) 评论(0) 推荐(0)

摘要:字符设备驱动 首先我们要清楚几个重要的数据结构。1. file_operations  结构体是一个函数指针的集合,每个打开的文件以他自身的函数集相关联。简单的说就是打开某个文件后,对他进行相关操作函数的集合,都包含在了这个结构体中。struct file_operations {struct module *owner;loff_t(*llseek) (struct file *, loff_t... 阅读全文

posted @ 2009-11-24 20:54 放飞自我 阅读(766) 评论(0) 推荐(0)

摘要:目录: /proc --- 一个虚拟文件系统 加载 proc 文件系统 察看 /proc 的文件 得到有用的系统/内核信息 有关运行中的进程的信息 通过 /proc 与内核交互 结论 参考文献摘要: Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。尽管在各种硬件平台上的 Linux 系统的 /proc 文件系统的基本概念都是相同的,但本文只讨... 阅读全文

posted @ 2009-11-01 22:41 放飞自我 阅读(488) 评论(0) 推荐(0)