C语言创建自己的设备(一个最最简单的例子)
2008-02-23 05:06:27来源:互联网 阅读 ()
我们在内核里面有时候项纪录一些自己的东西,其中有个好方法就是创建一个自己的特有的设备。这样我们能够在需要记录东西的地方,就调用这个设备的接口函数,这样很方便。
这里我们创建一个很基本的设备驱动,主要是看看一个设备驱动的框架,这个例子重的设备驱动没有任何实际的功能。:)
#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/malloc.h>
#include <asm/unistd.h>
#include <sys/syscall.h>
#include <asm/fcntl.h>
#include <asm/errno.h>
#include <linux/types.h>
#include <linux/dirent.h>
static int driver_open(struct inode *i, struct file *f)
{
printk("<1>Open Function\n");
return 0;
}
static struct file_operations fops = {
NULL, /* owner */
NULL, /*lseek*/
NULL, /*read*/
NULL, /*write*/
NULL, /*readdir*/
NULL, /*poll*/
NULL, /*ioctl*/
NULL, /*mmap*/
driver_open, /*open, take a look at my dummy open function*/
NULL, /*release*/
NULL, /*fsync...*/
NULL,
NULL,
NULL,
NULL,
NULL
};
int init_module(void)
{
if(register_chrdev(30, "mydriver", &fops)) return -EIO;
return 0;
}
void cleanup_module(void)
{
/*unregister our driver*/
unregister_chrdev(30, "mydriver");
}
在上面的代码中最重要的一个函数是:register_chrdev(...),这个函数在系统里面注册了我们的驱动程式,主设备号码是30。假如我们需要访问这个设备,则要这样做:
# mknod /dev/driver c 30 0
# insmod mydriver.o
然后您就能够在自己的程式里面使用这个设备了。
The file_operations 结构体提供了任何的函数,直接使用就能够了。注意,假如需要在设备里面log一些东西的话,就能够自己处理了。例如在write这个函数里面提供一些处理之类的。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C语言编程技巧汇萃
下一篇: C语言内核等待队列机制介绍
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash