当前位置:嗨网首页>书籍在线阅读

15-globalmem驱动在用户空间的验证

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.4 globalmem驱动在用户空间的验证

在对应目录通过“make”命令编译globalmem的驱动,得到globalmem.ko文件。运行:

lihacker@lihacker-laptop:~/develop/svn/ldd6410-read-only/training/kernel/drivers/

globalmem/ch6$ sudo su

root@lihacker-laptop:/home/lihacker/develop/svn/ldd6410-read-only/training/kernel/d

rivers/globalmem/ch6# insmod globalmem.ko

命令加载模块,通过“lsmod”命令,发现globalmem模块已被加载。再通过“cat /proc/devices”命令查看,发现多出了主设备号为250的“globalmem”字符设备驱动:

root@lihacker-laptop:/home/lihacker/develop/svn/ldd6410-read-only/training/kernel/d

rivers/globalmem/ch6# 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

14 sound

21 sg

29 fb

99 ppdev

108 ppp

116 alsa

128 ptm

136 pts

180 usb

188 ttyUSB

189 usb_device

216 rfcomm

226 drm

250 globalmem

接下来,通过命令:

root@lihacker-laptop:/home/lihacker/develop/svn/ldd6410-read-only/training/kernel/d

rivers/globalmem/ch6# mknod /dev/globalmem c 250 0

创建“/dev/globalmem”设备节点,并通过“echo 'hello world' > /dev/globalmem”命令和“cat /dev/globalmem”命令分别验证设备的写和读,结果证明“hello world”字符串被正确地写入globalmem字符设备:

root@lihacker-laptop:/home/lihacker/develop/svn/ldd6410-read-only/training/kernel/d

rivers/globalmem/ch6# echo "hello world" > /dev/globalmem

root@lihacker-laptop:/home/lihacker/develop/svn/ldd6410-read-only/training/kernel/d

rivers/globalmem/ch6# cat /dev/globalmem

hello world

如果启用了sysfs文件系统,将发现多出了/sys/module/globalmem目录,该目录下的树型结构为:

|-- refcnt

'-- sections

|-- .bss

|-- .data

|-- .gnu.linkonce.this_module

|-- .rodata

|-- .rodata.str1.1

|-- .strtab

|-- .symtab

|-- .text

'-- _ _versions

refcnt记录了globalmem模块的引用计数,sections下包含的数个文件则给出了globalmem所包含的BSS、数据段和代码段等的地址及其他信息。

对于代码清单6.18给出的支持两个globalmem设备的驱动,在加载模块后需创建两个设备节点,/dev/globalmem0对应主设备号globalmem_major,次设备号0,/dev/globalmem1对应主设备号globalmem_major,次设备号1。分别读写/dev/globalmem0和/dev/globalmem1,发现都读写到了正确的对应的设备。