我的字符驱动程序已经写好,并且已经编译进内核,但是每次需要手动mknod创建节点,现在我看别人的程序用devfs系统来自动创建设备节点,可是加入了相关代码后(注释的三行代码),编译有错误,程序代码见下面,求高人指点一下,帮我看看哪里出问题了,非常感谢!
#include <linux/kernel.h> /* printk() */
#include <linux/module.h>
#include <linux/init.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/fs.h>
#include <linux/cdev.h> /* cdev_add(), cdev_del() */
#include <linux/errno.h> /* error codes */
#include <linux/irq.h> /* IRQT_BOTHEDGE */
#include <linux/interrupt.h> /* request_irq(), free_irq() */
#include <linux/slab.h> /* kmalloc(), kfree() */
#include <linux/poll.h> /* PULLIN, PULLRDNORM */
#include <linux/ioport.h>
#include <asm/arch/gio.h>
#include <asm/io.h>
#include <asm/arch/io.h>
#include <asm/arch/hardware.h>
#define DEVICE_NAME "GPIO_ZFK"
#define BUTTON_MAJOR 223
#define BUTTON_MINOR 0
MODULE_AUTHOR("GGY2005");
MODULE_LICENSE("GPL");
static int GPIO_button_open(struct inode *inode, struct file *filp)
{
gpio_set_direction(GPIO(6), GIO_DIR_OUTPUT);
gpio_set_value(GPIO(6),1);
return 0;
}
static int GPIO_button_release(struct inode *inode, struct file *filp)
{
gpio_set_direction(GPIO(6), GIO_DIR_OUTPUT);
gpio_set_value(GPIO(6),0);
return 0;
}
static struct file_operations GPIO_ZFK_fops = {
.owner = THIS_MODULE,
.open = GPIO_button_open,
.release= GPIO_button_release,
};
//static devfs_handle_t devfs_handle;
static int __init GPIO_button_init(void)
{
int result;
gpio_set_direction(GPIO(6), GIO_DIR_OUTPUT);
gpio_set_value(GPIO(6),0);
result=register_chrdev(223, DEVICE_NAME ,&GPIO_ZFK_fops);
if (result<0)
{
printk(DEVICE_NAME"can't register major number");
return result;
}
// devfs_handle=devfs_register(NULL,DEVICE_NAME,DEVFS_FL_DEFAULT,223,0,S_IFCHR|S_IRUSR|S_IWUSR,&GPIO_ZFK_fops,NULL);
return 0;
}
static void __exit GPIO_button_cleanup(void)
{
//devfs_unregister(devfs_handle);
unregister_chrdev(223, DEVICE_NAME);
}
module_init(GPIO_button_init);
module_exit(GPIO_button_cleanup);
如何自动创建设备节点
-
- 帖子: 5
- 注册时间: 2009-05-27 17:01
-
- 帖子: 5
- 注册时间: 2009-05-27 17:01
Re: 如何自动创建设备节点
怎么没有人回复啊??