字符设备驱动开发
来源:互联网 发布:wps office软件下载 编辑:程序博客网 时间:2024/06/05 06:43
1、外部设备映射到字符设备
/* 宏定义 */
#define CHAR_MAJOR 90
#define CHAR_DEV_NAME "ssd_chr"
add_mtd_device(struct mtd_dev *mtd_dev,int dev_idx){ int idx; int dev_id; struct mtd_infor mtd_info = mtd_dev->mtd; spin_lock(mtd_table_lock); for(idx = 0;idx < MTD_DEV_COUNT;idx++) { if(NULL == mtd_table[idx]) { mtd_table[idx] = (struct mtd_dev)kmalloc(sizeof(struct mtd_dev),GFP_KERNEL); memset(mtd_table[idx],0,sizeof(struct mtd_dev)); dev_id = MKDEV(MTD_CHAR_MAJOR,i * 2); memcpy(mtd_table[idx],sizeof(struct mtd_dev)); mtd_table[idx] ->mtd.index = i ; mtd_table[idx]->mtd.usecount++; mtd_table[idx]->mtd.dev.class = g_mtdclass; mtd_table[idx]-.>mtd.dev.devt = j; dev_set_name(mtd_table[idx]->mtd_dev,"mtd%d",i); dev_set_drvdata(mtd_table[idx]->dev,&mtd_info); if(dev_id) { device_create(&mtd_table[idx]->dev.parent,j,NULL,"mtd_%d",i; } spin_unlock(mtd_table_lock); __module_get(THIS_MODULE); return 0; } } spin_unlock(mtd_table_lock);}
2、字符设备的注册/* 字符设备IO操作接口 */static struct file_operations g_chr_fops = {.open = chr_open,.close = chr_close,.ioctl = chr_ioctl}; static struct class g_mtd_class = {.name = "mtd“,.ower = THIS_MODULE,.suspend = mtd_suspend,.resume = mtd_resume}; /* 模块初始化 */static int __init module_charDrv_init(){int idx; if(register_chrdev(CHAR_MAJOR,CHAR_DEV_NAME,g_chr_fops)){printk(KERN_ERR“register char device failed !\n”);return -1;}/* MTD设备表初始化 */for(idx = 0;idx < MTD_DEV_COUNT){g_mtd_table[idx] = NULL;printk(“register char device failed !\n”);}/* 注册MTD设备Class */if(class_register(&g_mtd_class)){printk(KERN_ERR“register class failed !\n”);return -1;}printk(KERN_INFO"register char device success.\n");}
- 字符设备驱动开发
- linux驱动开发-字符设备
- linux字符设备驱动开发
- 驱动开发-字符设备1
- 驱动开发-字符设备2
- 开发一个字符设备驱动
- Linux 驱动开发-字符设备驱动
- 字符设备驱动 - linux驱动开发
- 【驱动】linux设备驱动·字符设备驱动开发
- Linux设备驱动开发详解--笔记6--字符设备驱动
- Linux设备驱动开发学习(1)--字符设备驱动
- Linux字符设备驱动程序开发(1)-使用字符设备驱动
- 字符设备驱动开发之数据结构
- Linux驱动程序开发 004- 字符设备驱动
- 字符设备驱动开发流程(总结)
- linux字符设备驱动开发基础知识
- linux驱动开发--字符设备:原子操作
- linux驱动开发--字符设备:自旋锁
- javascript技巧整理(1)
- 【Burnside引理】【Polya定理】Arif in Dhaka
- com组件的注册and反注册
- android framework java层是如何拦截并分发底层传送来的按键事件
- SlidingMenu自动打开和关闭时对话框提示
- 字符设备驱动开发
- ZeroMQ(java)中对IO的封装(StreamEngine.java)
- javascript技巧整理(2)
- C++的数组不支持多态”?
- javascript技巧整理(3)
- 【MoreWindows工作笔记6】PathCommonPrefix 路径公共前缀
- 数组大折腾。(二)
- 【MoreWindows工作笔记7】PathIsPrefix 判断路径的包含关系
- oracle学习之bulk collect用法