免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2158 | 回复: 1
打印 上一主题 下一主题

linux字符设备驱动模板(新标准) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-13 17:22 |只看该作者 |倒序浏览
//////////////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 #卸载驱动

论坛徽章:
0
2 [报告]
发表于 2014-07-29 14:22 |只看该作者
这个好像是linux设备驱动书本上一个小Demo
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP