发新话题
打印

一个有问题的驱动程序模块,急求各位大侠指教

一个有问题的驱动程序模块,急求各位大侠指教

#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      

TOP

编译的时候没有指定头文件路径了      

TOP

你是在编译驱动吗?你是在编译应用程序阿?驱动是在内核里边执行的,看一下编译驱动的书就知道了少一个参数!      

TOP

注意内核文件的Makefile文件,和内核模块必须的包含的头文件。      

TOP

warning: 的可以忽略。。。。


scull.c:33: `EBUSY' undeclared (first use in this function)----没有声明 `EBUSY' 这个      
酷 才是美:cool:

TOP

发新话题