当前位置: 首页 > Linux kernrl > 正文

[原]字符设备驱动程序

设备文件的一些


主设备号和次设备号

MAJOR 获得主设备号

MINOR 获得次设备号

不得不说,内核的位运算真用的很到位的.

然后是一些基本的数据结构:

首先是file_operation这个结构体:这个结构体就是用来将设备的编号与驱动程序建立链接的

这个结构看起来复杂,但是其实就是系统调用和描述符建立的一种映射关系,从代码中可以看出,这些都是open ,read ,lock 等等一系列函数的映射。

还有第二重要的数据结构


struct file 是一个内核结构,它不会出现在用户程序中。

另外又增加了两个新的宏:

unsigned int iminor(struct inode *inode);

unsigned int imajor(struct inode *inode);

字符设备的注册:

内核内部使用struct cdev 结构来表示设备。在内核调用设备的操作之前,必须分配并注册一个或者多个上述结构,所以我们的代码应该包含

容我去找一下这个结构体。……. 这个文件真的很小。全源码贴上来吧!

SCULL内存的使用:

其中调用了两个重要的内核函数:

void * kmalloc(size_t size, int flags);

void kfree(void *ptr);

这两个函数分别是分配内存与释放内存的内核级函数,关于这两个函数在这里不进行展开,后续我会实现下这类分配内存的函数。




作者:zmrlinux 发表于2015/9/13 14:09:43 原文链接
阅读:32 评论:0 查看评论
]]>

本文固定链接: http://zmrlinux.com/2015/09/13/%e5%8e%9f%e5%ad%97%e7%ac%a6%e8%ae%be%e5%a4%87%e9%a9%b1%e5%8a%a8%e7%a8%8b%e5%ba%8f/ | Kernel & Me

该日志由 root 于2015年09月13日发表在 Linux kernrl 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: [原]字符设备驱动程序 | Kernel & Me