[Questions][trace-cmd/libtraceevent] how to correctly parse info out from specifial format of event?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When I tried to analysis trace log that captured from xenomai system with kernelshark, I found
that it report "FAILED TO PARSE" for some events. These events have format like [1].
In trace, these events would be printed like [2]. 
At first, I was trying to develop new libtraceevent plugin to parse this event correctly. 
When I refer to code plugins/plugin_mac80211.c of libtraceevent to parse field param_ex 
out for this __data_loc type of data, I always get value 0x380018 and It is supposed to trace_seq_printf 
0x38 size of string got from offset 0x18 of tep_record->data but it fail. After debug,  I found
that the data start from offset 0x18 is not what we expect and first few bytes of data is like [3].

 It seems  that data stored for field param_ex is quite different from what we expect.
How could I look into trace-cmd related code to fix such issue? Any suggestions? 

Thanks for your help in advance.

[1]:
root@ecs-xenomai-isar:~# cat /sys/kernel/debug/tracing/events/cobalt_posix/cobalt_pthread_create/format
name: cobalt_pthread_create
ID: 628
format:
        field:unsigned short common_type;       offset:0;       size:2; signed:0;
        field:unsigned char common_flags;       offset:2;       size:1; signed:0;
        field:unsigned char common_preempt_count;       offset:3;       size:1; signed:0;
        field:int common_pid;   offset:4;       size:4; signed:1;

        field:unsigned long pth;        offset:8;       size:8; signed:0;
        field:int policy;       offset:16;      size:4; signed:1;
        field:__data_loc char[] param_ex;       offset:20;      size:4; signed:1;

print fmt: "pth=%p policy=%s param=' %s '", (void *)REC->pth, __print_symbolic(REC->policy, 
{0, "normal"}, {1, "fifo"}, {2, "rr"}, {11, "tp"}, {12, "quota"}, {10, "sporadic"}, {42, "cobalt"}, 
{43, "weak"}), cobalt_trace_parse_sched_params(p, REC->policy, (struct sched_param_ex *)(__get_dynamic_array(param_ex)))

[2]:
 smokey-752     [000] d.~2  7970.727466: cobalt_pthread_getschedparam: pth=000000009bbc7fe0 policy=fifo param={ priority=50 }
 smokey-762     [000] ....  7970.727492: cobalt_pthread_create: pth=00000000983468a5 policy=quota param={ priority=1, group=0 }

[3]:
0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0


Regards

Hongzhan Chen





[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux