linux字符设备驱动模板(新标准)

//gpio驱动模板//

static int major = 0;
static void gpio_setup_cdev(struct cdev *dev, int minor, struct file_operations *fops)
{
    int err, devno = MKDEV(major, minor);
    
    cdev_init(dev, fops);
    dev->owner = THIS_MODULE;
    dev->ops = fops;
    
    err = cdev_add(dev, devno, 1);
    
    if( err )
    {
        printk(KERN_NOTICE "Error %d adding gpio %d\n", err, minor);
    }
}

static struct file_operations gpio_fops =
{
    .owner = THIS_MODULE,
    .open  = gpio_open, /*进行初始化设置*/
    .release = gpio_release, /*释放设备*/
    .read  = gpio_read,
    .write = gpio_write,
    .ioctl = gpio_ioctl, /*实现主要控制功能*/
};

static struct cdev gpio_devs;
static int gpio_init(void)
{
    int result;
    dev_t dev = MKDEV(major, 0);
    
    if( major )
    {/*设备号注册*/
        result = register_chrdev_region(dev, 1, GPIO_DEVICE_NAME);
    }else
    {/*设备号动态分配*/
        result = alloc_chrdev_region(&dev, 0, 1, GPIO_DEVICE_NAME);
        major = MAJOR(dev);
    }
    
    gpio_setup_cdev(&gpio_devs, 0, &gpio_fops);
    printk("The major of the gpio device is %d\n", major);
    return 0;
}

static void gpio_cleanup(void)
{
    cdev_del(&gpio_devs);/*字符设备的注销*/
    unregister_chrdev_region(MKDEV(major, 0), 1);/*设备号的注销*/
    printk("gpio device uninstalled\n");
}

module_init(gpio_init);
module_exit(gpio_cleanup);

MODULE_AUTHOR("transistor<transistor@yeah.net>");
MODULE_LICENSE("GPL");
///end gpio驱动模板//

insmod *.ko #加载驱动
rmmod *.ko #卸载驱动

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(1685) | 评论(3) | 转发(0) |
0

上一篇:debian6添加新硬盘

下一篇:debian配置samba

给主人留下些什么吧!~~

diytvgy2011-02-15 09:13:30

transistor0: diytvgy如果还记得函数register_chrdev和unregister_chrdev的话。.....
呵呵,那个已经是好几年前的。我以为最近又有新标准。

transistor02011-02-14 23:03:32

diytvgy: 恕我新手,看不出新在哪,请博主解释一下.....
diytvgy如果还记得函数register_chrdev和unregister_chrdev的话。

diytvgy2011-02-14 10:40:49

恕我新手,看不出新在哪,请博主解释一下

评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值