在procfs底下無法直接使用mkdir/ln等指令建立目錄和建立link,不過有提供兩個API讓user達成這兩件事情。
static struct proc_dir_entry *proc_symlink(const char *src, struct proc_dir_entry *parent,const char *dest); static struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent);看名字就知道proc_symlink()是用來建立link的,src是檔名(basename),parent是src所在的目錄,dest是要link的對象。
proc_mkdir()就更容易了,要在那個目錄(parent)下建立新的目錄(name)。
下面是範例:
#include <linux/init.h> #include <linux/module.h> #include <linux/proc_fs.h> MODULE_LICENSE("GPL"); static char *bdir = "brook_dir"; module_param(bdir, charp, 0644); MODULE_PARM_DESC(dir, "brook's dir"); static char *bfile = "brook_file"; module_param(bfile, charp, 0644); MODULE_PARM_DESC(bfile, "brook's file"); static struct proc_dir_entry *ent = NULL; static int __init init_modules(void) { if (!(ent = proc_mkdir(bdir, NULL))) { printk("create dir \"%s\" failed\n", bdir); return -1; } if (!proc_symlink(bfile, ent, "../uptime")) { printk("create symlink \"%s\" failed\n", bfile); return -1; } return 0; } static void __exit exit_modules(void) { remove_proc_entry(bfile, ent); if (ent) { remove_proc_entry(bdir, NULL); } } module_init(init_modules); module_exit(exit_modules);
沒有留言:
張貼留言