除了DEFINE_EVENT,还可以使用DEFINE_EVENT_CONDITION()定义一个带条件的tracepoint. 如果要定义多个格式相同的tracepoint,可以用DEFINE_EVENT_CLASS()减少代码量; 注:内核提供了一个tracepoint的例子,samples/trace_events/目录中;可以配置CONFIG_samples,CONFIG_SAMPLE_TRACE_EVENTS,编译成模块,加载测试; 4.4案例:irqs跟...
trace event可以使用,其他机制也可以使用,只是kernel的绝大部分tracepoint都是trace event在使用。 单纯的定义和使用一个trace point,可以参考:Documentation/trace/tracepoints.txt trace event也必须向tracepoint注册自己的回调函数,这些回调函数的作用就是在函数被命中时往ringbuffer中写入trace信息。 1.2、增加一个新的...
event的定义使用头文件trace_events.h中的宏,这里和tracepoint.h中的宏复用,分为多个stage进行结构体的定义,定义如下结构体: structtrace_event_raw_<call>;structtrace_event_data_offsets_<call>;enumprint_line_ttrace_raw_output_<call>(structtrace_iterator*iter,intflags);staticstructtrace_event_callevent...
第5行判断trace point是否disable,如果没有disable,那么调用__DO_TRACE遍历执行trace point中的桩函数(通过“函数指针”来实现执行桩函数)。 trace point提供了统一的框架,用void *指向任何函数,所以各个trace point取出桩函数指针后,需要转换成自己的函数指针类型, TP_PROTO(data_proto)传递函数指针类型用于转换,具体...
trace,以文本格式输出内核中追踪缓冲区的内容,是查看trace日志的接口。 current_tracer,通过该接口指定当前ftrace要使用的tracer,也就是要追踪的函数/时间。 available_tracers,当前内核中可用的插件追踪器。 tracing_cpumask,以十六进制的位掩码指定要作为追踪对象的处理器,例如,指定0xb时仅在处理器0、1、3上进行追踪...
首先在头文件里通过 DECLARE_TRACE 宏定义了一系列函数。subsys/file.c 代码语言:javascript 复制 #include<trace/events/subsys.h>DEFINE_TRACE(subsys_eventname);voidsomefct(void){...trace_subsys_eventname(arg,task);...}// 实现自己的钩子函数并注册到内核void callback(...) {}register_trace_subsys...
首先在头文件里通过 DECLARE_TRACE 宏定义了一系列函数。subsys/file.c 复制 #include <trace/events/subsys.h>DEFINE_TRACE(subsys_eventname);void somefct(void){...trace_subsys_eventname(arg, task);...}// 实现自己的钩子函数并注册到内核void callback(...) {}register_trace_subsys_eventname(call...
格式信息可以用来解析二进制的trace流数据,也可以用这个格式中的内容来做trace filter,利用filter功能指定过滤条件后,将只会看到过滤后的事件数据。格式信息中包括两部分内容: 第一部分是通用的格式,这类通用字段都带有common前缀,这是所有的tracepoint event都具备的字段 ...
blockext4 header_event jbd2napiraw_syscalls…… enable #ls events/sched/ enablesched_kthread_stop_ret sched_process_exitsched_process_wait…… 3.2.2 追踪一个/若干事件 #echo 1 > events/sched/sched_wakeup/enable ...(省略追踪过程) #cat trace | head -10 ...
然后通过Vhicle Spy3向100ask_imx6开发板CAN端发送报文ID未0x201的报文,报文trace如下: 100ask_imx6开发板串口打印信息如下: (4)测试总结 到此为止,我们已经调试成功了CAN报文接收的功能编程。 14.4.5 socket_can 接收和发送实例 简单接收实例代码目录:“04_socketcan_recv_send” 本案例整合了“14.4.3 简单发送...