Linux 设备驱动 如何自动创建设备文件
来源:互联网 发布:gabrielle名字 知乎 编辑:程序博客网 时间:2024/04/30 02:40
设备文件是APP程序操作的对象,根据设备号匹配驱动程序,下面以简单的字符型设备驱动为例。
myclass = class_create(THIS_MODULE,"test_char"); /*在sys下创建类目录/sys/class/test_char*/
device_create(myclass, NULL, MKDEV(mem_major,0), NULL, "memdev0");
设备初始化的时候便创建了设备文件。,思考手工创建如何创建,它和自动创建的区别在哪里
/*设备驱动模块加载函数*/
static int memdev_init(void)
{
struct class *myclass;
int result;
int i;dev_t devno = MKDEV(mem_major, 0);
/* 静态申请设备号*/
if (mem_major)
result = register_chrdev_region(devno, 2, "memdev");
else /* 动态分配设备号 */
{
result = alloc_chrdev_region(&devno, 0, 2, "memdev");
mem_major = MAJOR(devno);
}
if (result < 0)
return result;/*初始化cdev结构*/
cdev_init(&cdev, &mem_fops);
cdev.owner = THIS_MODULE;
cdev.ops = &mem_fops;
/* 注册字符设备 */
cdev_add(&cdev, MKDEV(mem_major, 0), MEMDEV_NR_DEVS);
/* 为设备描述结构分配内存*/
mem_devp = kmalloc(MEMDEV_NR_DEVS * sizeof(struct mem_dev), GFP_KERNEL);
if (!mem_devp) /*申请失败*/
{
result = - ENOMEM;
goto fail_malloc;
}
memset(mem_devp, 0, sizeof(struct mem_dev));
/*为设备分配内存*/
for (i=0; i < MEMDEV_NR_DEVS; i++)
{
mem_devp[i].size = MEMDEV_SIZE;
mem_devp[i].data = kmalloc(MEMDEV_SIZE, GFP_KERNEL);
memset(mem_devp[i].data, 0, MEMDEV_SIZE);
}
/*自动创建设备文件*/
myclass = class_create(THIS_MODULE,"test_char"); /*在sys下创建类目录/sys/class/test_char*/
device_create(myclass, NULL, MKDEV(mem_major,0), NULL, "memdev0");
return 0;fail_malloc:
unregister_chrdev_region(devno, 1);
return result;
}
- Linux 设备驱动 如何自动创建设备文件
- Linux 设备驱动--- 自动创建设备文件
- Linux 设备驱动--- 自动创建设备文件
- 驱动开发中,如何自动创建设备文件?
- linux设备驱动程序自动创建设备文件
- linux驱动学习——怎么自动创建设备文件
- Linux内核驱动自动创建设备节点文件
- Linux内核驱动自动创建设备节点文件
- Linux驱动开发--自动创建设备文件节点
- linux驱动学习——怎么自动创建设备文件
- Linux内核驱动自动创建设备节点文件
- Linux内核驱动之自动创建设备文件
- Linux内核驱动自动创建设备节点文件
- Linux驱动模块自动创建设备节点
- 【Linux驱动】自动创建设备节点
- linux驱动之自动创建设备节点
- 高级字符设备驱动-自动创建设备文件笔记
- 简单字符设备驱动和自动创建设备文件
- Tomcat6下应用太多出现java.lang.OutOfMemoryError: PermGen space【解决办法】
- php查漏补缺之变量(一)
- Linux CPU Utilization
- 互联网系统架构的演进
- android4.0新控件Switch方法解析
- Linux 设备驱动 如何自动创建设备文件
- Binary Tree Inorder Traversal & Preorder Traversal
- 题目1128:求平均年龄
- hdu 1114 Piggy-Bank (完全背包)
- ubuntu下安装 weka
- 驱动第九天
- NoSQL和HBase
- Next Permutation 下一个排列
- 什么是回调函数