用python编译linux内核,用python从C代码中提取函数名及其注释(了解Linux内核)

背景信息

我刚刚开始学习驱动程序和linux内核。我想了解用户write()和{}是如何工作的。所以我开始使用ftrace来查看函数的路径。

但是像下面这样的单个程序的跟踪是“巨大的”。在int main() {

int w;

char buffer[] = "test string mit 512 byte";

int fd = open("/dev/sdd",O_DIRECT | O_RDWR | O_SYNC);

w = write(fd,buffer,sizeof(buffer));

}

我也不知道可以过滤哪些函数,因为我不知道Linux内核,也不想丢掉一些重要的东西。在

所以我开始研究函数图跟踪。这是一个剪子。在

^{pr2}$

我看到了这些.down_write()和{},我想,这正是我要搜索的。所以我查了一下。down_write() sourcecode:/*

* lock for writing

*/

void __sched down_write(struct rw_semaphore *sem)

{

might_sleep();

rwsem_acquire(&sem->dep_map, 0, 0, _RET_IP_);

LOCK_CONTENDED(sem, __down_write_trylock, __down_write);

}

但事实证明,这只是锁和释放锁。

然后我开始为我写一个小的参考资料,所以我不必总是查找这些资料,因为感觉好像有9000多个。然后我有了一个想法,为什么不解析这些函数及其注释,并将它们写在跟踪文件中的函数后面?像这样:[...]

12) 0.468 us | .down_write(); lock for writing

12) 0.548 us | .do_brk();

12) 0.472 us | .up_write(); release a write lock

12) 0.762 us | .kfree();

12) 0.472 us | .fput();

[...]

主要问题

所以我开始考虑如何实现这个目标。我想用python来做,因为我觉得用它最舒服。在

1。问题

为了匹配C函数和注释,我必须定义并实现一个递归匹配语法:(

2。问题

有些函数只是包装器,没有注释。例如,do_brk()包装了__do_brk(),而注释只在__do_brk()上

所以我想,也许还有其他的评论来源。可能是医生?还有可能,这种使用python的“文档生成”已经有人实现了。在

或者我理解一个系统的方法是不是很不聪明?你能给我一点建议吗?在

非常感谢您的阅读,

费边

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值