最近再android 上使用 ftrace , android kernel 是 3.10.49
cat available_filter_functions 会出现下面错误 ,
adb shell cat /sys/kernel/debug/tracing/available_filter_functions
/system/bin/sh: cat: /sys/kernel/debug/tracing/available_filter_functions: No
such device
但是我另外版本 android kernel 3.10.69 可以正常使用
于是我把 android kernel-3.10.69/kernel/ftrace 程式码 porting 到
android kernel-3.10.49/kernel/ftrace
编译后出现下面错误讯息
kernel/kernel/trace/trace_sched_wakeup.c: In function 'start_wakeup_tracer':
kernel/kernel/trace/trace_sched_wakeup.c:546:2: warning: passing argument 1
of 'register_trace_sched_migrate_task' from incompatible pointer type
[enabled by default]
error, forbidden warning: trace_sched_wakeup.c:546
make[3]: *** [kernel/trace/trace_sched_wakeup.o] Error 1
make[2]: *** [kernel/trace] Error 2
make[2]: *** Waiting for unfinished jobs....
1. 但是有产生出 trace_sched_wakeup.o , build error 为什么还是可以编译出
trace_sched_wakeup.o
2. register_trace_sched_migrate_task 再整个kernel中根本没有实现这函数 , 为
什么3.10.69也可以编译过? 是不是Makefile 有做什么flag 阻挡?
有办法像shell script debug 下 -x 参数可以看到详细执行流程
在kernel 中像Makefile问题要怎么去分析?
3. 我现在被指派做kernel 部份我发现很多时候搞不懂 Makefile Kconfig,
初学kernel 要去研究内核编译结构嘛?还是应该专注再程式码学习?
谢谢