
Linux驱动
求佛_ce123
专注于嵌入式软件开发
展开
-
Linux驱动程序框架介绍
嵌入式linux中文站向广大嵌入式linux爱好者介绍Linux驱动程序框架。 一、linux的设备驱动程序与外界的接口可以分为三个部分: 1.驱动程序与操作系统内核的接口。通过file_operations(include/linux/fs.h)数据结构原创 2011-08-09 21:34:55 · 4745 阅读 · 0 评论 -
container_of详解
container_of详解#define container_of(ptr, type, member) ({ \ const typeof(((type *)0)->member) * __mptr = (ptr); \ (type *)((char *)__mptr - offsetof(type, member)原创 2012-08-31 23:43:48 · 3173 阅读 · 0 评论 -
互斥与同步——local_irq_enable与local_irq_disable
互斥与同步——local_irq_enable与local_irq_disable内核版本:2.6.30平台:arm 在单处理器不可抢占系统中,使用local_irq_enable和local_irq_disable是消除异步并发源的有效方式。在驱动程序中要避免使用这两个宏(系统不能长时间不响应中断),后面将要介绍的自旋锁等互斥机制中会经常用到这两个宏。local_irq_enable宏用于打开本原创 2012-07-25 09:21:59 · 7099 阅读 · 0 评论 -
互斥与同步——概述
互斥与同步——概述 如果运行的系统中至始至终只有一个执行路径,那么无须考虑互斥和同步的问题,但是,现代的Linux系统不仅支持多进程而且还指出多处理器(例如。多对称处理器SMP),在这样的环境下,当多个执行路径并发执行事确保对共享资源的访问安全是驱动开发不得不面对的问题。概括的说,互斥是指对资源的排他性访问,同步则要对进程执行的先后顺序做出妥善的安排。 所谓竞态,就是多个执行路径有可能对同一个资源原创 2012-07-24 20:17:38 · 2350 阅读 · 0 评论 -
错误: 隐式声明函数‘init_MUTEX’ [-Werror=implicit-function-declaration]
在新版本的linux内核中,init_mutex已经被废除了,新版本使用sema_init函数。查了一下早期版本的定义:平台:X86 32位内核:2.6.30定义:Linux/include/linux/semaphore.h 1 /* 2 * Copyright (c) 2008 Intel Corporation 3 * Author: Matthew Wilcox原创 2012-07-23 21:33:57 · 18131 阅读 · 1 评论 -
错误: 初始值设定项里有未知的字段‘ioctl’
这个错误网上搜索发现3.0.0.15版本内核 file_operation结构体已经删除了ioctl函数,取代的是:long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);long (*compat_ioctl) (struct file *, unsigned int, unsigned long);file_ope原创 2012-07-23 21:44:32 · 5732 阅读 · 1 评论 -
深入分析Tasklet机制
深入分析Tasklet机制一、tasklet使用 Tasklet的使用比较简单,每个Tasklet结构体有一个函数指针,指向你自己定义的函数。当我们要使用 tasklet ,首先新定义一个tasklet_struct结构,并初始化好要执行函数指针,然后将它挂接到 task_vec 链表中,并触发一个软中断就可以等着被执行了。1.1.定义tasklet_struct结构Void my_tasklet原创 2012-07-23 07:51:32 · 15599 阅读 · 0 评论 -
错误: 程序中有游离的‘\xxx’
在Linux下用gcc编译程序,出现如下错误:root@czu:~/桌面/chrdev# gcc -o test test.ctest.c: 在函数‘main’中:test.c:7:1: 错误: 程序中有游离的‘\343’test.c:7:1: 错误: 程序中有游离的‘\200’test.c:7:1: 错误: 程序中有游离的‘\200’test.c:8:1: 错误: 程序中有游离的‘\343’te原创 2012-07-17 15:56:50 · 6691 阅读 · 0 评论 -
深入浅出down_interruptible
深入浅出down_interruptible函数 int down_interruptible(struct semaphore *sem)这个函数的功能就是获得信号量,如果得不到信号量就睡眠,此时没有信号打断,那么进入睡眠。但是在睡眠过程中可能被信号打断,打断之后返回-EINTR,主要用来进程间的互斥同步。下面是该函数的注释:/*** down_interruptible - acquire t原创 2012-06-30 21:34:38 · 30685 阅读 · 4 评论 -
linux下bus,device,driver三者关系
linux下bus,device,driver三者关系 1.bus: 总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接转载 2011-08-30 09:08:26 · 5387 阅读 · 4 评论