tep_find_function(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | EXAMPLE | FILES | SEE ALSO | AUTHOR | REPORTING BUGS | LICENSE | RESOURCES | NOTES | COLOPHON

LIBTRACEEVENT(3)          libtraceevent Manual          LIBTRACEEVENT(3)

NAME         top

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

SYNOPSIS         top

       #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         top

       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         top

       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         top

           #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         top

           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.

SEE ALSO         top

       libtraceevent(3), trace-cmd(1)

AUTHOR         top

           Steven Rostedt <rostedt@goodmis.org[1]>, author of libtraceevent.
           Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>, author of this man page.

REPORTING BUGS         top

       Report bugs to <linux-trace-devel@vger.kernel.org[3]>

LICENSE         top

       libtraceevent is Free Software licensed under the GNU LGPL 2.1

RESOURCES         top

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

NOTES         top

        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

COLOPHON         top

       This page is part of the libtraceevent (Linux kernel trace event
       library) project.  Information about the project can be found at
       ⟨https://www.trace-cmd.org/⟩.  If you have a bug report for this
       manual page, see ⟨https://www.trace-cmd.org/⟩.  This page was
       obtained from the project's upstream Git repository
       ⟨https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git⟩
       on 2024-06-14.  (At that time, the date of the most recent commit
       that was found in the repository was 2024-05-17.)  If you
       discover any rendering problems in this HTML version of the page,
       or you believe there is a better or more up-to-date source for
       the page, or you have corrections or improvements to the
       information in this COLOPHON (which is not part of the original
       manual page), send a mail to man-pages@man7.org

libtraceevent 1.7.3            09/24/2023               LIBTRACEEVENT(3)

Pages that refer to this page: tep_set_function_resolver(3)