LINUX手动创建设备节点与字符注册
来源:互联网 发布:软件大全 编辑:程序博客网 时间:2024/04/29 15:20
#include <linux/init.h>
#include <linux/module.h>
#include <linux/cdev.h>
#include <linux/fs.h>
MODULE_LICENSE("GPL");
#define DEVICE_NAME "hello0"
struct cdev mycdev;
dev_t device_node;
static __init int hello_init(void)
{
intrest;
/*申请设备号,设备号其实是驱动号,表征这个设备有哪号驱动管理,次设备号才是 真正的设备序号*/
rest=alloc_chrdev_region(&device_node,0,1, DEVICE_NAME);
if(rest < 0)
printk("%salloc_chrdev_region failed.\n",__func__);
returnrest;
}
/*struct cdev用来描述字符设备*/
cdev_init(&mycdev,NULL);
mycdev.owner= THIS_MODULE;
/*添加设备到内核,cat /proc/device下可以看到设备号, cat /proc/device记录了所以已经分配的设备编号*/
cdev_add(&mycdev,device_node, 1);
printk(KERN_ALERT"%s -- hello world,are you ok!\n",__func__);
return0;
}
static void hello_exit(void)
{
/*从系统中移除设备*/
cdev_del(&mycdev);
/*释放字符设备占用的设备编号*/
unregister_chrdev_region(device_node,1);
printk(KERN_ALERT"%s -- hello world,are you ok!\n",__func__);
}
module_init(hello_init);
module_exit(hello_exit);
[root@host-192-168-1-5 node]# insmodcreatedevicenode.ko
在 /proc/devices 中有刚刚申请的设备号信息:
[root@host-192-168-1-5 node]# cat /proc/devices
Character devices:
1mem
4/dev/vc/0
4tty
4ttyS
5/dev/tty
5/dev/console
5/dev/ptmx
6lp
7vcs
10misc
13input
29fb
128 ptm
136 pts
162 raw
180 usb
189 usb_device
202 cpu/msr
203 cpu/cpuid
251 hello0
253 hidraw
254 pcmcia
Block devices:
1ramdisk
2fd
7loop
8sd
9md
65sd
66sd
67sd
68sd
69sd
70sd
71sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
252 device-mapper
253 virtblk
254 mdp
[root@host-192-168-1-5 node]# rmmodcreatedevicenode
卸载掉模块时,/proc/devices记录也被删除
[root@host-192-168-1-5node]# cat /proc/devices
Character devices:
1mem
4/dev/vc/0
4tty
4ttyS
5/dev/tty
5/dev/console
5/dev/ptmx
6lp
7vcs
10misc
13input
29fb
128 ptm
136 pts
162 raw
180 usb
189 usb_device
202 cpu/msr
203 cpu/cpuid
253 hidraw
254 pcmcia
Block devices:
1ramdisk
2fd
7loop
8sd
9md
65sd
66sd
67sd
68sd
69sd
70sd
71sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
252 device-mapper
253 virtblk
254 mdp
[root@host-192-168-1-5 node]#
上面这个简单的驱动程序,主要工作是注册了一个字符设备到内核,同时为改设备申请了一个设备号,如果需要访问这个设备文件则需要手动创建:
mknod /dev/hello0 c 251 0
- LINUX手动创建设备节点与字符注册
- 《Linux设备节点创建》手动与自动创建设备节点
- Linux驱动编程 step-by-step (四) 字符设备的注册与设备节点的自动创建
- 创建字符设备与生成设备节点
- LINUX 字符设备自动创建文件节点
- 《Linux驱动》创建字符类设备节点
- Linux字符设备节点创建讲解
- Linux驱动学习(3-设备节点-手动创建)
- Linux字符设备注册与注销
- Linux创建字符设备 自动生成设备节点
- Linux创建字符设备 自动生成设备节点
- linux驱动开发--字符设备:自动创建设备节点
- linux驱动开发--字符设备:创建一组设备节点
- Linux创建字符设备 自动生成设备节点
- linux字符设备驱动中自动创建设备节点
- Linux字符设备驱动自动创建设备节点
- linux字符设备驱动中自动创建设备节点【转】
- linux驱动开发--字符设备:自动创建设备节点
- Mach-O
- ubuntu14.04开启wifi热点
- jquery时间轴
- Android-Universal-Image-Loader使用实例
- update方法可以借鉴
- LINUX手动创建设备节点与字符注册
- linux守护程序
- linux 下批量转换pdf的命令方法
- 住房公积金查询
- RMAN概述及其体系结构
- 在线编辑器与JSF和EL表达式,阻止自动转义
- 函数重载与函数模板
- 最小圆覆盖(随机增量法&模拟退火法)
- RMAN配置、监控与管理