linux驱动
文章平均质量分 85
z08053520
这个作者很懒,什么都没留下…
展开
-
linux驱动之makefile详解
# If KERNELRELEASE is defined, weve been invoked from the # kernel build system and can use its language. ifneq ($(KERNELRELEASE),) obj-m := hello.o # Otherwise we were called directly from the转载 2010-03-17 16:04:00 · 978 阅读 · 1 评论 -
request_irq()、free_irq()
request_irq()、free_irq() 收藏 request_irq()、free_irq() 这是驱动程序申请中断和释放中断的调用。在include/linux/sched.h里声明。 request_irq()调用的定义: int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct p转载 2010-04-12 22:34:00 · 773 阅读 · 0 评论 -
init_waitqueue_head() -- 初始化等待队列头
init_completion() --> init_waitqueue_head()初始化等待队列头(wait_queue_head_t): 将wait_queue_head_t.task_list域中的两个指针指向其自身(wait_queue_head_t.task_list)-----------------------------------------------------------转载 2010-04-12 22:39:00 · 6204 阅读 · 0 评论 -
task_struct 数据结构
在linux 中每一个进程都由task_struct 数据结构来定义. task_struct就是我们通常所说的PCB.她是对进程控制的唯一手段也是最有效的手段. 当我们调用fork() 时, 系统会为我们产生一个task_struct结构。然后从父进程,那里继承一些数据, 并把新的进程插入到进程树中, 以待进行进程管理。因此了解task_struct的结构对于我们理解任务调度(在linux 中任转载 2010-03-28 22:30:00 · 428 阅读 · 0 评论 -
proc的操作
揭开Linux Proc文件系统的神秘面纱 【摘要】本文介绍了Linux proc文件系统的一些细节。首先介绍了proc文件系统的基本概念/存储位置/读取时机/加载方式,接着介绍了如何利用proc文件系统读取系统/内核中的各种信息以及进程相关的各种信息,分析了各个文件的作用及可能对应的系统调用命令等。最后介绍了驱动程序及内核模块如何利用proc 文件系统向用户空间提供调试接口输出调试信息。转载 2010-03-26 22:38:00 · 421 阅读 · 0 评论 -
udev说明
因为本身从事存储行业,在工作中多次碰到用户有这样的要求:我的linux系统中原来有一块SCSI硬盘,系统分配的设备文件是/dev/sda。现在新 增加了一个外置的磁盘阵列,通过SCSI卡连接。但接上这个磁盘阵列后,/dev/sda变成了磁盘阵列的硬盘了,原来内置的SCSI硬盘变成了 /dev/sdb,我希望将设备文件固定下来。 过去,我总是对用户说,这个比较麻烦,因为/dev/sda等文件转载 2010-03-17 23:50:00 · 597 阅读 · 0 评论 -
file_operations下函数详解
注释基于kernel 2.6.15 struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t (*llseek) (struct file *, loff_t, int); // llseek用来修改文件当前的读写位置,返回新位置 //转载 2010-03-20 13:50:00 · 522 阅读 · 0 评论 -
内核编程头文件与API参考
1、#include dev_t:dev_t 是内核中用来表示设备编号的数据类型。 int MAJOR(dev_t dev); int MINOR(dev_t dev); 这两个宏从设备编号中抽取出主/次设备号。类型size_t也在头文件linux/types.h中定义。2、 #include “文件系统”头文件,它是编写设备驱动程序必需转载 2010-03-20 10:50:00 · 834 阅读 · 0 评论 -
class_create()说明
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_creat转载 2010-03-18 00:04:00 · 1568 阅读 · 0 评论 -
struct dev_t
device number(dev_t)linux driver 2009-08-21 10:08:03 阅读26 评论0 字号:大中小dev_tdescription: the dev_t type in is used to hold device numbers—both the major and minor parts. header: #includ转载 2010-03-20 10:31:00 · 3369 阅读 · 0 评论 -
struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head i_sb_list;转载 2010-03-18 16:06:00 · 965 阅读 · 0 评论 -
request_region()
void request_region(unsigned long from, unsigned long num, const char *name) 这个函数用来申请一块输入输出区域。 如果这段I/O端口没有被占用,在我们的驱动程序中就可以使用它。在使用之前,必须向系统登记,以防止被其他程序占用。登记后,在/proc/ioports文件中可以看到你登记的io口。 参数1:io端转载 2010-03-18 14:50:00 · 1837 阅读 · 0 评论 -
cdev结构体及其相关函数
1、在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下: struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构,在写驱动时,其结构体转载 2010-03-17 21:07:00 · 4331 阅读 · 0 评论