LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: incarnation

怎么知道加载了哪些kernal module ?

[复制链接]
发表于 2004-4-13 01:47:39 | 显示全部楼层
最初由 Freebird 发表
Use kldstat to display the  dynamic modules you have loaded.Under FreeBSD,the loadable modules are in this directory:/boot/kernel,you can load any of those by the command kldload xxxx.ko.By the way,Modules must have an extension of .ko.

Good Luck!^_^



他的问题不是怎么调用模块,而是用examples里的范例后,可以调用一个(例如syscall.c)syscall的模块,再用modstat,modfind等库函数去显示这个syscall模块的各个信息(范例是call.c)。问题在于如果我们自己编译几个内核模块,加载以后,可以用modstat,modfind看到这些模块的信息,但是我们不能用modstat, modfind显示系统里事先加载的模块,例如linux.ko,acpi.ko等等。我当时写了几个小程序去测试,也没搞清楚为什么会这样,因为放假出游就放下了。

另外incarnation说的也不清楚,我猜了半天才明白他要说什么。。。真不明白怎么
问问题都不说明白了。。。
发表于 2004-4-13 01:56:45 | 显示全部楼层
bash-2.05b# kldstat
Id Refs Address    Size     Name
1    7 0xc0400000 5e16d8   kernel
2    1 0xc09e2000 51ac8    acpi.ko
3    1 0xc223a000 19000    linux.ko
bash-2.05b# kldload /usr/share/examples/kld/syscall/module/mycall.ko
bash-2.05b# kldstat
Id Refs Address    Size     Name
1    8 0xc0400000 5e16d8   kernel
2    1 0xc09e2000 51ac8    acpi.ko
3    1 0xc223a000 19000    linux.ko
4    1 0xc253a000 2000     mycall.ko

bash-2.05b# kldload /usr/share/examples/kld/syscall/module/syscall.ko
bash-2.05b# kldstat
Id Refs Address    Size     Name
1    9 0xc0400000 5e16d8   kernel
2    1 0xc09e2000 51ac8    acpi.ko
3    1 0xc223a000 19000    linux.ko
4    1 0xc253a000 2000     mycall.ko
5    1 0xc253c000 2000     syscall.ko

bash-2.05b# ./call
linux modules modfind is -1
linux modstat -1, ID 671404961 , name ì¿¿
mycall modules modfind is 326
mycall modstat is 0, ID 326 , name mycall
syscall modfind is 327
syscall modstat is 0, ID 327 , name syscall



可以看出用一样的函数去显示信息,mycall,syscall都可以,但是linux.ko却是回false值

 楼主| 发表于 2004-4-29 17:10:07 | 显示全部楼层
谢谢werix ,问题有待解决!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表