【发布时间】:2017-12-05 00:46:09
【问题描述】:
我要做的是列出 linux 内核模块中所有已注册的文件系统。我尝试在 fs/filesystems.c 中参考 find_filesystem(http://elixir.free-electrons.com/linux/v3.19/source/fs/filesystems.c) 编写如下代码。
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/fs.h> // for basic filesystem
MODULE_LICENSE("Dual BSD/GPL");
static struct file_system_type *file_systems;
void list_filesystem(void){
struct file_system_type **p;
for(p=&file_systems; *p; p=&(*p)->next){
printk(KERN_INFO "%s\n",(*p)->name);
}
}
static int __init filesystem_list_init(void){
printk(KERN_INFO "Loaded list_filesystem module\n");
list_filesystem();
return 0;
}
static void __exit filesystem_list_exit(void){
printk(KERN_INFO "list_filesystem module unloaded \n");
}
/* Declaration of the init and exit functions */
module_init(filesystem_list_init);
module_exit(filesystem_list_exit);
我希望这会列出所有文件系统。 但它不显示任何文件系统名称。 所以请让我知道这段代码有什么问题以及应该如何修改。
【问题讨论】: