LinuxÒÁµéÔ°ÂÛ̳'s Archiver

zsltianfeng ·¢±íÓÚ 2006-7-26 20:09

Ò»¸öÓÐÎÊÌâµÄÇý¶¯³ÌÐòÄ£¿é,¼±Çó¸÷λ´óÏÀÖ¸½Ì

#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

220hcy ·¢±íÓÚ 2006-9-29 10:49

±àÒëµÄʱºòûÓÐÖ¸¶¨Í·Îļþ·¾¶ÁË

sof_ljh ·¢±íÓÚ 2006-9-29 14:40

ÄãÊÇÔÚ±àÒëÇý¶¯Âð£¿ÄãÊÇÔÚ±àÒëÓ¦ÓóÌÐò°¢£¿Çý¶¯ÊÇÔÚÄÚºËÀï±ßÖ´Ðеģ¬¿´Ò»Ï±àÒëÇý¶¯µÄÊé¾ÍÖªµÀÁËÉÙÒ»¸ö²ÎÊý£¡

linqianghe ·¢±íÓÚ 2006-11-1 16:20

×¢ÒâÄÚºËÎļþµÄMakefileÎļþ£¬ºÍÄÚºËÄ£¿é±ØÐëµÄ°üº¬µÄÍ·Îļþ¡£

iouzby ·¢±íÓÚ 2006-11-1 16:58

warning: µÄ¿ÉÒÔºöÂÔ¡£¡£¡£¡£


scull.c:33: `EBUSY' undeclared (first use in this function)----ûÓÐÉùÃ÷ `EBUSY' Õâ¸ö

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.