模块驱动添加字符设备驱动
来源:互联网 发布:linux ftp命令安装 编辑:程序博客网 时间:2024/06/08 09:31
第一步:
typedef struct { struct cdev cdev; dev_t devid; struct class *cls;}mypdata;ssize_t myread(struct file *fl, char *__user buf, size_t len, loff_t *off){ //... return 0;}struct file_operations fops = { .owner = THIS_MODULE, .read = myread,//这里举例,详细的参数查看file_operations结构体};
第二步:
int myprobe(struct platform_device *pdev){ static int mi = 0;//用于记录次设备号 /////////// cdev 部分///////// pdata->devid = MKDEV(MYMA, mi);//MYMA:主设备号 ret = register_chrdev_region(pdata->devid, COUNT, pdev->name); if (ret < 0) goto err2;//根据需要,回收资源 cdev_init(&pdata->cdev, &fops); pdata->cdev.owner = THIS_MODULE; ret = cdev_add(&pdata->cdev, pdata->devid, COUNT); if (ret < 0) goto err3;//根据需要,回收资源 pdata->cls = class_create(THIS_MODULE, pdev->name); device_create(pdata->cls, NULL, pdata->devid, NULL, pdev->name); //... platform_set_drvdata(pdev, pdata);//保存数据 mi++;//依次分配次设备号 return 0;}
第三步:
int myremove(struct platform_device *pdev){ mypdata *pdata = platform_get_drvdata(pdev); //提取数据 unregister_chrdev_region(pdata->devid, COUNT); cdev_del(&pdata->cdev); device_destroy(pdata->cls, pdata->devid); class_destroy(pdata->cls); //.. //.. return 0;}
阅读全文
0 0
- 模块驱动添加字符设备驱动
- 字符设备驱动模块
- 内核模块编程笔记 - 字符设备驱动
- Linux内核模块编程-字符设备驱动
- linux驱动模块开发(二)----字符设备驱动
- linux 字符设备驱动(一)模块与设备
- 字符设备驱动模块 之 基本通用模块
- 【Linux驱动】字符设备驱动
- 【Linux驱动】字符设备驱动
- linux驱动-字符设备驱动
- 【Linux驱动】字符设备驱动
- 字符设备驱动-LED驱动
- 字符设备驱动更新
- 字符设备驱动模板
- 字符设备驱动模板
- 字符设备驱动1
- 字符设备驱动编写
- LINUX--字符设备驱动
- 4.15 反编译和文档生成器(略)
- set公共函数
- resultType和resultMap的区别
- 数据库学习笔记2
- 读《我编程,我快乐》——程序员职业规划之道
- 模块驱动添加字符设备驱动
- [TensorFlow学习手记] 3
- mybatis查询如何返回List<Map>类型数据
- 4.16 jar文件(略)
- 结尾非零数的奇偶性
- 类间关系之继承
- Android的内容观察者、通知、内容提供者
- linux ubuntu 查看显卡信息
- 特征值和特征向量的几何和物理意义