1*436bf2bcSAndroid Build Coastguard Workerlibtraceevent(3) 2*436bf2bcSAndroid Build Coastguard Worker================ 3*436bf2bcSAndroid Build Coastguard Worker 4*436bf2bcSAndroid Build Coastguard WorkerNAME 5*436bf2bcSAndroid Build Coastguard Worker---- 6*436bf2bcSAndroid Build Coastguard Workertep_find_function,tep_find_function_address,tep_find_function_info - Find function name / start address. 7*436bf2bcSAndroid Build Coastguard Worker 8*436bf2bcSAndroid Build Coastguard WorkerSYNOPSIS 9*436bf2bcSAndroid Build Coastguard Worker-------- 10*436bf2bcSAndroid Build Coastguard Worker[verse] 11*436bf2bcSAndroid Build Coastguard Worker-- 12*436bf2bcSAndroid Build Coastguard Worker*#include <event-parse.h>* 13*436bf2bcSAndroid Build Coastguard Worker 14*436bf2bcSAndroid Build Coastguard Workerconst char pass:[*]*tep_find_function*(struct tep_handle pass:[*]_tep_, unsigned long long _addr_); 15*436bf2bcSAndroid Build Coastguard Workerunsigned long long *tep_find_function_address*(struct tep_handle pass:[*]_tep_, unsigned long long _addr_); 16*436bf2bcSAndroid Build Coastguard Workerint *tep_find_function_info*(struct tep_handle pass:[*]_tep_, unsigned long long _addr_, const char pass:[**]_name_, 17*436bf2bcSAndroid Build Coastguard Worker unsigned long long pass:[*]_start_, unsigned long pass:[*]_size_); 18*436bf2bcSAndroid Build Coastguard Worker-- 19*436bf2bcSAndroid Build Coastguard Worker 20*436bf2bcSAndroid Build Coastguard WorkerDESCRIPTION 21*436bf2bcSAndroid Build Coastguard Worker----------- 22*436bf2bcSAndroid Build Coastguard WorkerThese functions can be used to find function name and start address, by given 23*436bf2bcSAndroid Build Coastguard Workeraddress. The given address does not have to be exact, it will select the function 24*436bf2bcSAndroid Build Coastguard Workerthat would contain it. 25*436bf2bcSAndroid Build Coastguard Worker 26*436bf2bcSAndroid Build Coastguard WorkerThe *tep_find_function()* function returns the function name, which contains the 27*436bf2bcSAndroid Build Coastguard Workergiven address _addr_. The _tep_ argument is the trace event parser context. 28*436bf2bcSAndroid Build Coastguard Worker 29*436bf2bcSAndroid Build Coastguard WorkerThe *tep_find_function_address()* function returns the function start address, 30*436bf2bcSAndroid Build Coastguard Workerby given address _addr_. The _addr_ does not have to be exact, it will select the 31*436bf2bcSAndroid Build Coastguard Workerfunction that would contain it. The _tep_ argument is the trace event parser context. 32*436bf2bcSAndroid Build Coastguard Worker 33*436bf2bcSAndroid Build Coastguard WorkerThe *tep_find_function_info()* function retrieves the _name_, starting address (_start_), 34*436bf2bcSAndroid Build Coastguard Workerand the function text _size_ of the function at _address_, if it is found. Note, 35*436bf2bcSAndroid Build Coastguard Workerif the _tep_ handle has a function resolver (used by perf), then _size_ is set to 36*436bf2bcSAndroid Build Coastguard Workerzero. 37*436bf2bcSAndroid Build Coastguard Worker 38*436bf2bcSAndroid Build Coastguard WorkerRETURN VALUE 39*436bf2bcSAndroid Build Coastguard Worker------------ 40*436bf2bcSAndroid Build Coastguard WorkerThe *tep_find_function()* function returns the function name, or NULL in case 41*436bf2bcSAndroid Build Coastguard Workerit cannot be found. 42*436bf2bcSAndroid Build Coastguard Worker 43*436bf2bcSAndroid Build Coastguard WorkerThe *tep_find_function_address()* function returns the function start address, 44*436bf2bcSAndroid Build Coastguard Workeror 0 in case it cannot be found. 45*436bf2bcSAndroid Build Coastguard Worker 46*436bf2bcSAndroid Build Coastguard WorkerThe *tep_find_function_info()* function returns 1 if a function is found for the 47*436bf2bcSAndroid Build Coastguard Workergiven address, or 0 if it is not. 48*436bf2bcSAndroid Build Coastguard Worker 49*436bf2bcSAndroid Build Coastguard WorkerEXAMPLE 50*436bf2bcSAndroid Build Coastguard Worker------- 51*436bf2bcSAndroid Build Coastguard Worker[source,c] 52*436bf2bcSAndroid Build Coastguard Worker-- 53*436bf2bcSAndroid Build Coastguard Worker#include <event-parse.h> 54*436bf2bcSAndroid Build Coastguard Worker... 55*436bf2bcSAndroid Build Coastguard Workerstruct tep_handle *tep = tep_alloc(); 56*436bf2bcSAndroid Build Coastguard Worker... 57*436bf2bcSAndroid Build Coastguard Workervoid show_function_name(unsigned long long addr) 58*436bf2bcSAndroid Build Coastguard Worker{ 59*436bf2bcSAndroid Build Coastguard Worker const char *fname = tep_find_function(tep, addr); 60*436bf2bcSAndroid Build Coastguard Worker 61*436bf2bcSAndroid Build Coastguard Worker if (fname) 62*436bf2bcSAndroid Build Coastguard Worker printf("Found function %s at 0x%0llx\n", fname, addr); 63*436bf2bcSAndroid Build Coastguard Worker else 64*436bf2bcSAndroid Build Coastguard Worker printf("No function found at 0x%0llx\n", addr); 65*436bf2bcSAndroid Build Coastguard Worker} 66*436bf2bcSAndroid Build Coastguard Worker 67*436bf2bcSAndroid Build Coastguard Workervoid show_function_start_addr(unsigned long long addr) 68*436bf2bcSAndroid Build Coastguard Worker{ 69*436bf2bcSAndroid Build Coastguard Worker const char *fname = tep_find_function(tep, addr); 70*436bf2bcSAndroid Build Coastguard Worker unsigned long long fstart; 71*436bf2bcSAndroid Build Coastguard Worker 72*436bf2bcSAndroid Build Coastguard Worker if (!fname) { 73*436bf2bcSAndroid Build Coastguard Worker printf("No function found at 0x%0llx\n", addr); 74*436bf2bcSAndroid Build Coastguard Worker return; 75*436bf2bcSAndroid Build Coastguard Worker } 76*436bf2bcSAndroid Build Coastguard Worker 77*436bf2bcSAndroid Build Coastguard Worker fstart = tep_find_function_address(tep, addr); 78*436bf2bcSAndroid Build Coastguard Worker printf("Function %s at 0x%llx starts at 0x%0llx\n", 79*436bf2bcSAndroid Build Coastguard Worker fname, addr, fstart); 80*436bf2bcSAndroid Build Coastguard Worker} 81*436bf2bcSAndroid Build Coastguard Worker 82*436bf2bcSAndroid Build Coastguard Workervoid show_function_info(unsigned long long addr) 83*436bf2bcSAndroid Build Coastguard Worker{ 84*436bf2bcSAndroid Build Coastguard Worker const char *fname; 85*436bf2bcSAndroid Build Coastguard Worker unsigned long long fstart; 86*436bf2bcSAndroid Build Coastguard Worker unsigned long size; 87*436bf2bcSAndroid Build Coastguard Worker 88*436bf2bcSAndroid Build Coastguard Worker ret = tep_find_function_info(tep, addr, &fname, &fstart, &size); 89*436bf2bcSAndroid Build Coastguard Worker if (!ret) { 90*436bf2bcSAndroid Build Coastguard Worker printf("No function found at 0x%0lx\n", addr); 91*436bf2bcSAndroid Build Coastguard Worker return; 92*436bf2bcSAndroid Build Coastguard Worker } 93*436bf2bcSAndroid Build Coastguard Worker 94*436bf2bcSAndroid Build Coastguard Worker printf("Function %s at 0x%lx starts at 0x%0lx and is %ld in size\n", 95*436bf2bcSAndroid Build Coastguard Worker fname, addr, fstart, size); 96*436bf2bcSAndroid Build Coastguard Worker} 97*436bf2bcSAndroid Build Coastguard Worker... 98*436bf2bcSAndroid Build Coastguard Worker-- 99*436bf2bcSAndroid Build Coastguard Worker 100*436bf2bcSAndroid Build Coastguard WorkerFILES 101*436bf2bcSAndroid Build Coastguard Worker----- 102*436bf2bcSAndroid Build Coastguard Worker[verse] 103*436bf2bcSAndroid Build Coastguard Worker-- 104*436bf2bcSAndroid Build Coastguard Worker*event-parse.h* 105*436bf2bcSAndroid Build Coastguard Worker Header file to include in order to have access to the library APIs. 106*436bf2bcSAndroid Build Coastguard Worker*-ltraceevent* 107*436bf2bcSAndroid Build Coastguard Worker Linker switch to add when building a program that uses the library. 108*436bf2bcSAndroid Build Coastguard Worker-- 109*436bf2bcSAndroid Build Coastguard Worker 110*436bf2bcSAndroid Build Coastguard WorkerSEE ALSO 111*436bf2bcSAndroid Build Coastguard Worker-------- 112*436bf2bcSAndroid Build Coastguard Worker*libtraceevent*(3), *trace-cmd*(1) 113*436bf2bcSAndroid Build Coastguard Worker 114*436bf2bcSAndroid Build Coastguard WorkerAUTHOR 115*436bf2bcSAndroid Build Coastguard Worker------ 116*436bf2bcSAndroid Build Coastguard Worker[verse] 117*436bf2bcSAndroid Build Coastguard Worker-- 118*436bf2bcSAndroid Build Coastguard Worker*Steven Rostedt* <[email protected]>, author of *libtraceevent*. 119*436bf2bcSAndroid Build Coastguard Worker*Tzvetomir Stoyanov* <[email protected]>, author of this man page. 120*436bf2bcSAndroid Build Coastguard Worker-- 121*436bf2bcSAndroid Build Coastguard WorkerREPORTING BUGS 122*436bf2bcSAndroid Build Coastguard Worker-------------- 123*436bf2bcSAndroid Build Coastguard WorkerReport bugs to <[email protected]> 124*436bf2bcSAndroid Build Coastguard Worker 125*436bf2bcSAndroid Build Coastguard WorkerLICENSE 126*436bf2bcSAndroid Build Coastguard Worker------- 127*436bf2bcSAndroid Build Coastguard Workerlibtraceevent is Free Software licensed under the GNU LGPL 2.1 128*436bf2bcSAndroid Build Coastguard Worker 129*436bf2bcSAndroid Build Coastguard WorkerRESOURCES 130*436bf2bcSAndroid Build Coastguard Worker--------- 131*436bf2bcSAndroid Build Coastguard Workerhttps://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ 132