您的位置:首页 > 其它

通过debugfs_rename 修改已经存在的debugfs的目录的name

2017-08-04 16:25 363 查看
一般我们通过下面的code来创建一个名为bongding的debugfs的入口

void bond_create_debugfs(void)

{

    bonding_debug_root = debugfs_create_dir("bonding", NULL);

    if (!bonding_debug_root) {

        pr_warn("Warning: Cannot create bonding directory in debugfs\n");

    }

}

得到bonding_debug_root 后,可以通过debugfs_create_dir 在bonding 目录下再新建一级目录。然后通过debugfs_create_file 在这个第二级目录下新建一个rlb_hash_table的文件,这个文件的权限0400。关联的操作的是bond_debug_rlb_hash_fops

void bond_debug_register(struct bonding *bond)

{

    if (!bonding_debug_root)

        return;

    bond->debug_dir =

        debugfs_create_dir(bond->dev->name, bonding_debug_root);

    if (!bond->debug_dir) {

        netdev_warn(bond->dev, "failed to register to debugfs\n");

        return;

    }

    debugfs_create_file("rlb_hash_table", 0400, bond->debug_dir,

                bond, &bond_debug_rlb_hash_fops);

}

这个时候加入我想修改bond->debug_dir,就可以调用debugfs_rename函数,这个函数会返回一个dentry,然后将返回的dentry保存在需要改变的bond->debug_dir 中就行了.

static inline struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, struct dentry *new_dir, char *new_name)

void bond_debug_reregister(struct bonding *bond)

{

    struct dentry *d;

    if (!bonding_debug_root)

        return;

    d = debugfs_rename(bonding_debug_root, bond->debug_dir,

               bonding_debug_root, bond->dev->name);

    if (d) {

        bond->debug_dir = d;

    } else {

        netdev_warn(bond->dev, "failed to reregister, so just unregister old one\n");

        bond_debug_unregister(bond);

    }

}

最终看到的结果就是bond->debug_dir 这个目录的名字被改为bond->dev->name
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐