一个有问题的驱动程序模块,急求各位大侠指教
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include<linux/kernel.h>
//#include<linux/sched.h>
#include<linux/module.h>
#include<linux/fs.h>
//#include<asm-x86_64/uaccess.h>
#include<asm/io.h>
#define SCULL_NAME "scull"
int scull_major = 0;//the main device number.
static int dev_open_num = 0;
int scull_open(struct inode *inode, struct file *filp)
{
printk("\ndevice_open(%p, %p)\n", inode, filp);
if(dev_open_num)
return -EBUSY;
dev_open_num++;
MOD_INC_USE_COUNT;
return 0;
}
int scull_release(struct inode *inode, struct file *filp)
{
MOD_DEC_USE_COUNT;
return 0;
}
struct file_operations scull_fops = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
scull_open,
scull_release,
};
int init_module(void)
{
int retval;
printk("<1>successfully load module: scull!\n");
retval = register_chrdev(scull_major, SCULL_NAME, &scull_fops);
if(retval < 0)
return retval;
if(scull_major == 0)
{
scull_major = retval;
printk("scull_major: %d\n", scull_major);
return 0;
}
}
void cleanup_module(void)
{
unregister_chrdev(scull_major, SCULL_NAME);
printk("<1>successfully unload module: scull!\n");
}
用gcc - c scull.c 编译时总出现下面的提醒, 小弟为此郁闷很长时间,恳请各位大侠指教.
谢谢!1!
cull.c:29: warning: `struct file' declared inside parameter list
scull.c:29: warning: its scope is only this definition or declaration, which is
probably not what you want
scull.c:29: warning: `struct inode' declared inside parameter list
scull.c: In function `scull_open':
scull.c:33: `EBUSY' undeclared (first use in this function)
scull.c:33: (Each undeclared identifier is reported only once
scull.c:33: for each function it appears in.)
scull.c:35: union has no member named `usecount'
scull.c: At top level:
scull.c:40: warning: `struct file' declared inside parameter list
scull.c:40: warning: `struct inode' declared inside parameter list
scull.c: In function `scull_release':
scull.c:42: union has no member named `usecount'
scull.c: At top level:
scull.c:46: variable `scull_fops' has initializer but incomplete type
scull.c:47: warning: excess elements in struct initializer
scull.c:47: warning: (near initialization for `scull_fops')
scull.c:48: warning: excess elements in struct initializer
scull.c:48: warning: (near initialization for `scull_fops')
scull.c:49: warning: excess elements in struct initializer
scull.c:49: warning: (near initialization for `scull_fops')
scull.c:50: warning: excess elements in struct initializer
scull.c:50: warning: (near initialization for `scull_fops')
scull.c:51: warning: excess elements in struct initializer
scull.c:51: warning: (near initialization for `scull_fops')
scull.c:52: warning: excess elements in struct initializer
scull.c:52: warning: (near initialization for `scull_fops')
scull.c:53: warning: excess elements in struct initializer
scull.c:53: warning: (near initialization for `scull_fops')
scull.c:54: warning: excess elements in struct initializer
scull.c:54: warning: (near initialization for `scull_fops')
scull.c:55: warning: excess elements in struct initializer
scull.c:55: warning: (near initialization for `scull_fops')
scull.c:46: storage size of `scull_fops' isn't known