procfs、debugfs

procfs 是进程文件系统(file system) 的缩写,包含一个伪文件系统,用于通过内核访问进程信息
这个文件系统通常被挂载到 /proc 目录。由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存

伪文件系统
用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。proc文件系统是动态从系统内核读出所需信息并提交的

优点
在调试时修改某些内核变量,而printk无能为力;为了修改某个值重新编译内核或者驱动过于低效

安装文件系统

# mount -t debugfs none /mnt

头文件

linux/debugfs.h

创建目录

struct dentry *debugfs_create_dir(const char *name, struct dentry *parent);

创建文件

struct dentry *debugfs_create_file(const char *name, mode_t mode, struct dentry *parent, void *data, 
const struct file_operations *fops);

name就是创建的名字;parent是父目录;mode是这个文件读写权限;data是传入的参数;fops为实现在该文件上进行文件操作的fiel_operations结构指针

变量处理

struct dentry *debugfs_create_u8(const char *name, mode_t mode, struct dentry *parent, u8 *value);
struct dentry *debugfs_create_u16(const char *name, mode_t mode, struct dentry *parent, u16 *value);
struct dentry *debugfs_create_u32(const char *name, mode_t mode, struct dentry *parent, u32 *value);
struct dentry *debugfs_create_u64(const char *name, mode_t mode, struct dentry *parent, u64 *value);
struct dentry *debugfs_create_bool(const char *name, mode_t mode, struct dentry *parent, u32 *value);
struct dentry *debugfs_create_blob(const char *name, mode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob);

删除文件

void debugfs_remove(struct dentry *dentry);
void debugfs_remove_recursive(struct dentry *dentry);

举例
debugfs

my_debugfs_root = debugfs_create_dir("mydebug", NULL); //根目录
sub_dir = debugfs_create_dir("subdir", my_debugfs_root); //子目录
debugfs_create_u8("a", 0644, my_debugfs_root, &a);

char hello[32] = "Hello world!\n";
struct debugfs_blob_wrapper b;

b.data = (void *)hello;
b.size = strlen(hello) + 1;
debugfs_create_blob("b", 0644, my_debugfs_root, &b);

struct file_operations c_fops = {
    .owner = THIS_MODULE,
    .open = c_open,
    .read = c_read,
    .write = c_write,
};

debugfs_create_file("c", 0644, sub_dir, NULL, &c_fops);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值