一、/proc/devices 和 /dev/敲命令cat /proc/devices可以显示系统中已注册的char和block设备
第一列是major设备号,第二列是设备name
- [root@local kernel_mpme_ppc_linux_2_6_24]# cat /proc/devices
-
Character devices:
-
1 mem
-
4 /dev/vc/0
-
4 tty
-
4 ttyS
-
5 /dev/tty
-
5 /dev/console
-
5 /dev/ptmx
-
6 lp
-
7 vcs
-
10 misc
-
13 input
-
29 fb
-
36 netlink
- ..................
上面两列数据哪来的?从下面函数里来的:
- devno =MKDEV(dbg_major,0); //dbg_major就是major设备号
result = register_chrdev_region(devno,1, name); //name就是显示在/proc/devices里的名字
/dev/下的设备文件是通过mknod加上去的,用户这里的文件来访问驱动。
格式:mknod device1 c/b major minor
- -bash-3.2# mknod /dev/todel c 255 0
-
-bash-3.2# ll /dev/todel
-
crw-r--r-- 1 root root 255, 0 Jan 1 08:39 /dev/todel
使用awk工具可以从/proc/devices 文件中获取设备号并创建节点,脚本文件如下:
- #xxx为设备名
-
module=xxx
-
major=`awk "\\$2==\"$module\" {print \\$1}" /proc/devices`
-
insmod xxx.ko
-
mknod /dev/xxx c $major 0
二、/dev/mem 和/dev/kmem 的区别/dev/mem:
物理内存的全镜像。可以用来访问物理内存。
用来访问物理IO设备,比如X用来访问显卡的物理内存,或嵌入式中访问GPIO。
用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存,用来实现用户空间和驱动共享内存
/dev/kmem:
kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容
一般可以用来查看kernel的变量,或者用作rootkit之类的
/dev/mem可能需要手动创建
mknod /dev/mem c 1 1
详见此贴 http://blog.chinaunix.net/space.php?uid=24148050&do=blog&id=359666
阅读(4960) | 评论(0) | 转发(2) |