1*4882a593Smuzhiyunlibtraceevent(3) 2*4882a593Smuzhiyun================ 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunNAME 5*4882a593Smuzhiyun---- 6*4882a593Smuzhiyuntep_find_common_field, tep_find_field, tep_find_any_field - 7*4882a593SmuzhiyunSearch for a field in an event. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSYNOPSIS 10*4882a593Smuzhiyun-------- 11*4882a593Smuzhiyun[verse] 12*4882a593Smuzhiyun-- 13*4882a593Smuzhiyun*#include <event-parse.h>* 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunstruct tep_format_field pass:[*]*tep_find_common_field*(struct tep_event pass:[*]_event_, const char pass:[*]_name_); 16*4882a593Smuzhiyunstruct tep_format_field pass:[*]*tep_find_field*(struct tep_event_ormat pass:[*]_event_, const char pass:[*]_name_); 17*4882a593Smuzhiyunstruct tep_format_field pass:[*]*tep_find_any_field*(struct tep_event pass:[*]_event_, const char pass:[*]_name_); 18*4882a593Smuzhiyun-- 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunDESCRIPTION 21*4882a593Smuzhiyun----------- 22*4882a593SmuzhiyunThese functions search for a field with given name in an event. The field 23*4882a593Smuzhiyunreturned can be used to find the field content from within a data record. 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunThe _tep_find_common_field()_ function searches for a common field with _name_ 26*4882a593Smuzhiyunin the _event_. 27*4882a593Smuzhiyun 28*4882a593SmuzhiyunThe _tep_find_field()_ function searches for an event specific field with 29*4882a593Smuzhiyun_name_ in the _event_. 30*4882a593Smuzhiyun 31*4882a593SmuzhiyunThe _tep_find_any_field()_ function searches for any field with _name_ in the 32*4882a593Smuzhiyun_event_. 33*4882a593Smuzhiyun 34*4882a593SmuzhiyunRETURN VALUE 35*4882a593Smuzhiyun------------ 36*4882a593SmuzhiyunThe _tep_find_common_field(), _tep_find_field()_ and _tep_find_any_field()_ 37*4882a593Smuzhiyunfunctions return a pointer to the found field, or NULL in case there is no field 38*4882a593Smuzhiyunwith the requested name. 39*4882a593Smuzhiyun 40*4882a593SmuzhiyunEXAMPLE 41*4882a593Smuzhiyun------- 42*4882a593Smuzhiyun[source,c] 43*4882a593Smuzhiyun-- 44*4882a593Smuzhiyun#include <event-parse.h> 45*4882a593Smuzhiyun... 46*4882a593Smuzhiyunvoid get_htimer_info(struct tep_handle *tep, struct tep_record *record) 47*4882a593Smuzhiyun{ 48*4882a593Smuzhiyun struct tep_format_field *field; 49*4882a593Smuzhiyun struct tep_event *event; 50*4882a593Smuzhiyun long long softexpires; 51*4882a593Smuzhiyun int mode; 52*4882a593Smuzhiyun int pid; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun event = tep_find_event_by_name(tep, "timer", "hrtimer_start"); 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun field = tep_find_common_field(event, "common_pid"); 57*4882a593Smuzhiyun if (field == NULL) { 58*4882a593Smuzhiyun /* Cannot find "common_pid" field in the event */ 59*4882a593Smuzhiyun } else { 60*4882a593Smuzhiyun /* Get pid from the data record */ 61*4882a593Smuzhiyun pid = tep_read_number(tep, record->data + field->offset, 62*4882a593Smuzhiyun field->size); 63*4882a593Smuzhiyun } 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun field = tep_find_field(event, "softexpires"); 66*4882a593Smuzhiyun if (field == NULL) { 67*4882a593Smuzhiyun /* Cannot find "softexpires" event specific field in the event */ 68*4882a593Smuzhiyun } else { 69*4882a593Smuzhiyun /* Get softexpires parameter from the data record */ 70*4882a593Smuzhiyun softexpires = tep_read_number(tep, record->data + field->offset, 71*4882a593Smuzhiyun field->size); 72*4882a593Smuzhiyun } 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun field = tep_find_any_field(event, "mode"); 75*4882a593Smuzhiyun if (field == NULL) { 76*4882a593Smuzhiyun /* Cannot find "mode" field in the event */ 77*4882a593Smuzhiyun } else 78*4882a593Smuzhiyun { 79*4882a593Smuzhiyun /* Get mode parameter from the data record */ 80*4882a593Smuzhiyun mode = tep_read_number(tep, record->data + field->offset, 81*4882a593Smuzhiyun field->size); 82*4882a593Smuzhiyun } 83*4882a593Smuzhiyun} 84*4882a593Smuzhiyun... 85*4882a593Smuzhiyun-- 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunFILES 88*4882a593Smuzhiyun----- 89*4882a593Smuzhiyun[verse] 90*4882a593Smuzhiyun-- 91*4882a593Smuzhiyun*event-parse.h* 92*4882a593Smuzhiyun Header file to include in order to have access to the library APIs. 93*4882a593Smuzhiyun*-ltraceevent* 94*4882a593Smuzhiyun Linker switch to add when building a program that uses the library. 95*4882a593Smuzhiyun-- 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunSEE ALSO 98*4882a593Smuzhiyun-------- 99*4882a593Smuzhiyun_libtraceevent(3)_, _trace-cmd(1)_ 100*4882a593Smuzhiyun 101*4882a593SmuzhiyunAUTHOR 102*4882a593Smuzhiyun------ 103*4882a593Smuzhiyun[verse] 104*4882a593Smuzhiyun-- 105*4882a593Smuzhiyun*Steven Rostedt* <rostedt@goodmis.org>, author of *libtraceevent*. 106*4882a593Smuzhiyun*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>, author of this man page. 107*4882a593Smuzhiyun-- 108*4882a593SmuzhiyunREPORTING BUGS 109*4882a593Smuzhiyun-------------- 110*4882a593SmuzhiyunReport bugs to <linux-trace-devel@vger.kernel.org> 111*4882a593Smuzhiyun 112*4882a593SmuzhiyunLICENSE 113*4882a593Smuzhiyun------- 114*4882a593Smuzhiyunlibtraceevent is Free Software licensed under the GNU LGPL 2.1 115*4882a593Smuzhiyun 116*4882a593SmuzhiyunRESOURCES 117*4882a593Smuzhiyun--------- 118*4882a593Smuzhiyunhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 119