最近在了解tracepoints,找几个用例学习它的惯用法。到了workqueue tracing,在trace_workqueue.c中有如下代码:
int __init trace_workqueue_early_init(void)
{
int ret, cpu;
for_each_possible_cpu(cpu) {
spin_lock_init(&workqueue_cpu_stat(cpu)->lock);
INIT_LIST_HEAD(&workqueue_cpu_stat(cpu)->list);
}
ret = register_trace_workqueue_insertion(probe_workqueue_insertion, NULL);
if (ret)
goto out;
ret = register_trace_workqueue_execution(probe_workqueue_execution, NULL);
}
通常说来,有register_trace_XXX, 一般就有名为XXX 的tracepoints,但是左找右找就是找不着。 到git树的历史中确实找到了曾经存在过的tracepoints,但是最终发现patch
,因为concurrency managed workqueue 的缘故,通过去掉内核编译选项,实际使trace_workqueue.c已经变成了dead code。
我个人只能说,这种做法是非常不好,为什么不全部removed掉,一旦成熟,可以重新加进来。留僵尸在stable mainline中,好吗?
阅读(1248) | 评论(0) | 转发(0) |