首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > C语言创建自己的设备(一个最最简单的例子)
【标  题】:C语言创建自己的设备(一个最最简单的例子)
【关键字】:C,语言
【来  源】:网络

C语言创建自己的设备(一个最最简单的例子)

作者:王辉

我们在内核里面有时候项纪录一些自己的东西,其中有个好方法就是创建一个自己的特有的设备。这样我们可以在需要记录东西的地方,就调用这个设备的接口函数,这样很方便。
这里我们创建一个很基本的设备驱动,主要是看看一个设备驱动的框架,这个例子重的设备驱动没有任何实际的功能。:)

#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这个函数里面提供一些处理之类的。



I like Linux!!

C语言内核等待队列机制介绍:【上一篇】
C 编译器对结构空间的分配及其应用:【下一篇】
【相关文章】
  • C语言内核等待队列机制介绍
  • linux 内核原代码 sched.c 的注释
  • C语言精细绘图及动画
  • The Standard C Library for Linux
  • C语言监测内存泄漏
  • The Standard C Library for Linux:stdlib.h
  • C语言字符串查找
  • The Standard C Library for Linux:ctype.h
  • C 语言中操作字符串的一些函数源代码
  • The Standard C Library for Linux:stdio.h(2)
  • 【随机文章】
  • 小区用户网络宽带接入和多业务应用平台
  • 理解Visual C++的资源
  • Fireworks使用技巧及常见问题解答
  • [Oracle] Installing Oracle 10g on RHEL AS 3 Step-b
  • JAVA经验谈:尽可能使用堆栈变量
  • 从硬盘安装Linux操作系统(Windows下vmWare 启动安装法)
  • 二维数组元素的标识
  • 办公室中名片的制作
  • 把用户添加到邮件列表里测试一些
  • 用ISO 安装 Linux
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.