通过sysfs动态调试linux内核

思路:通过sysfs接口,在kernel起来之后,动态查看或者更改某些寄存器

如下代码展示如何显示某些寄存器的值:

 static ssize_t register_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{
         /*
             Read register value here!
         */
         return sprintf(buf, "%02x", <register_value>);
}

static struct kobj_attribute registershow_attr =
         __ATTR(registershow, 0644, register_show, NULL);

struct kobject *mytest

mytest = kobject_create_and_add("my_register_show", NULL);
if (!mytest)
         return -ENOMEM;

sysfs_create_file(mytest, &registershow_attr.attr); 

这样可以把最后一句代码嵌到普通driver 的init部分,系统启动后,会在/sysfs/下边创建一个目录 “my_register_show”, 该目录下边有个文件 registershow, 你cat这个文件,就会运行 register_show函数,把相应你要读的寄存器信息打印出来。 

有些sensor driver 就是通过这种机制(或者input subsystem)把数据提供给上层用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值