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