在编译模块的时候,如果模块加载成功。在/sys/module目录中又模块的信息。
/proc/modules包含所有模块的信息。
/sys/module
/proc/modules
/sys/module 是一个 sysfs 目录层次, 包含当前加载模块的信息. /proc/moudles 是旧式的, 那种信息的单个文件版本. 其中的条目包含了模块名, 每个模块占用的内存数量, 以及使用计数. 另外的字串追加到每行的末尾来指定标志, 对这个模块当前是活动的.
wugang@wugang-desktop:~$ cat /proc/modules
book 3200 0 - Live 0xe042e000
hello 2560 0 - Live 0xe02c3000
i915 32512 2 - Live 0xe0417000
其中 book(模块名) 3200是模块占用内存的大小。 0是模块加载计数 Live表示模块可用
0xe042e000 肯定是模块的起始地址。
在/sys/modules模块的信息(新版)
来自内核源码目录的目标文件, 描述一个模块为之建立的环境.
wugang@wugang-desktop:~$ cd /sys/module/book
wugang@wugang-desktop:/sys/module/book$ ls
holders initstate notes parameters refcnt sections srcversion
holders 持有人,是写本模块的人。但是目录为空。
initstate 记录模块活动
notes 暂且没有查到,好像是日记,有个隐藏文件,可能就是记录本模块的信息 *
parameters 使用的变量
refcnt 模块的加载计数
wugang@wugang-desktop:/sys/module/book/sections$ ls
__param __versions
其中sections目录中, __param是参数起始地址。
而sections目录中,__versions 好像和版本有关 *
这两个参数和地址有关。
srcversion BDF6D850ED985425407E440 模块版本号 像模块的ID一样
打开/proc/kallsyms目录下文件都是0字节,且打开为空白信息。
但是用cat命令,可以查看出里面的信息。
最后翻书,操作系统运行时,进程及内核信息(cpu,硬盘分区,内存信息)存放在这里。
/proc目录为伪文件系统,proc并不是真正的文件系统,它存在于内存中。
而且/sys也是存在内存中。
-r-------- 1 root root 528420864 2008-07-17 21:25 kcore
我机子上的,/proc文件目录大小几乎全部集中在那个文件中。
且无法用命令查看其中的信息.
/proc 文件系统是一种特殊的、由程序创建的文件系统,内核使用它向外界输出信息。/proc 下面的每个文件都绑定于一个内核函数,这个函数在文件被读取时,动态地生成文件的"内容",例如,/proc/modules 列出的是当前载入模块的列表。这样可以动态访问其中进程和内核信息。
Linux系统对/proc的使用很频繁。现代Linux系统中的很多工具都是通过 /proc 来获取它们的信息,例如 ps、top 和 uptime。有些设备驱动程序也通过 /proc 输出信息,你的驱动程序当然也可以这么做。因为 /proc 文件系统是动态的,所以驱动程序模块可以在任何时候添加或删除其中的文件项。
特征完全的 /proc 文件项相当复杂;在所有的这些特征当中,有一点要指出的是,这些 /proc 文件不仅可以用于读出数据,也可以用于写入数据。不过,大多数时候,/proc 文件项是只读文件。
注:*表示我不确定的问题,有问题请参考 module.h源代码。
阅读(2580) | 评论(0) | 转发(0) |