# tep_find_function

## NAME



           tep_find_function, tep_find_function_address,
           tep_find_function_info - Find function name / start address.
    


## SYNOPSIS



           **#include <event-parse.h>**
    
           const char * **tep_find_function**(struct tep_handle *_tep_ , unsigned long long _addr_);
           unsigned long long **tep_find_function_address**(struct tep_handle *_tep_ , unsigned long long _addr_);
           int **tep_find_function_info**(struct tep_handle *_tep_ , unsigned long long _addr_ , const char **_name_ ,
                                      unsigned long long *_start_ , unsigned long *_size_);
    


## DESCRIPTION



           These functions can be used to find function name and start
           address, by given address. The given address does not have to be
           exact, it will select the function that would contain it.
    
           The **tep_find_function()** function returns the function name, which
           contains the given address _addr_. The _tep_ argument is the trace
           event parser context.
    
           The **tep_find_function_address()** function returns the function
           start address, by given address _addr_. The _addr_ does not have to be
           exact, it will select the function that would contain it. The _tep_
           argument is the trace event parser context.
    
           The **tep_find_function_info()** function retrieves the _name_ , starting
           address (_start_), and the function text _size_ of the function at
           _address_ , if it is found. Note, if the _tep_ handle has a function
           resolver (used by perf), then _size_ is set to zero.
    


## RETURN VALUE



           The **tep_find_function()** function returns the function name, or
           NULL in case it cannot be found.
    
           The **tep_find_function_address()** function returns the function
           start address, or 0 in case it cannot be found.
    
           The **tep_find_function_info()** function returns 1 if a function is
           found for the given address, or 0 if it is not.
    


## EXAMPLE



               #include <event-parse.h>
               ...
               struct tep_handle *tep = tep_alloc();
               ...
               void show_function_name(unsigned long long addr)
               {
                       const char *fname = tep_find_function(tep, addr);
    
                       if (fname)
                               printf("Found function %s at 0x%0llx\n", fname, addr);
                       else
                               printf("No function found at 0x%0llx\n", addr);
               }
    
               void show_function_start_addr(unsigned long long addr)
               {
                       const char *fname = tep_find_function(tep, addr);
                       unsigned long long fstart;
    
                       if (!fname) {
                               printf("No function found at 0x%0llx\n", addr);
                               return;
                       }
    
                       fstart = tep_find_function_address(tep, addr);
                       printf("Function %s at 0x%llx starts at 0x%0llx\n",
                              fname, addr, fstart);
               }
    
               void show_function_info(unsigned long long addr)
               {
                       const char *fname;
                       unsigned long long fstart;
                       unsigned long size;
    
                       ret = tep_find_function_info(tep, addr, &fname, &fstart, &size);
                       if (!ret) {
                               printf("No function found at 0x%0lx\n", addr);
                               return;
                       }
    
                       printf("Function %s at 0x%lx starts at 0x%0lx and is %ld in size\n",
                              fname, addr, fstart, size);
               }
               ...
    


## FILES



               **event-parse.h**
                       Header file to include in order to have access to the library APIs.
               **-ltraceevent**
                       Linker switch to add when building a program that uses the library.
    


## LICENSE



           libtraceevent is Free Software licensed under the GNU LGPL 2.1
    


## RESOURCES



           **https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ **
    


## NOTES



            1. rostedt@goodmis.org
               mailto:rostedt@goodmis.org
    
            2. tz.stoyanov@gmail.com
               mailto:tz.stoyanov@gmail.com
    
            3. linux-trace-devel@vger.kernel.org
               mailto:linux-trace-devel@vger.kernel.org
    


* * *