libtraceevent(3)
================

NAME
----
tep_event_common_fields, tep_event_fields - Get a list of fields for an event.

SYNOPSIS
--------
[verse]
--
*#include <event-parse.h>*

struct tep_format_field pass:[*]pass:[*]*tep_event_common_fields*(struct tep_event pass:[*]_event_);
struct tep_format_field pass:[*]pass:[*]*tep_event_fields*(struct tep_event pass:[*]_event_);
--

DESCRIPTION
-----------
The _tep_event_common_fields()_ function returns an array of pointers to common
fields for the _event_. The array is allocated in the function and must be freed
by free(). The last element of the array is NULL.

The _tep_event_fields()_ function returns an array of pointers to event specific
fields for the _event_. The array is allocated in the function and must be freed
by free(). The last element of the array is NULL.

RETURN VALUE
------------
Both _tep_event_common_fields()_ and _tep_event_fields()_ functions return
an array of pointers to tep_format_field structures in case of success, or
NULL in case of an error.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
int i;
struct tep_format_field **fields;
struct tep_event *event = tep_find_event_by_name(tep, "kvm", "kvm_exit");
if (event != NULL) {
	fields = tep_event_common_fields(event);
	if (fields != NULL) {
		i = 0;
		while (fields[i]) {
			/*
			  walk through the list of the common fields
			  of the kvm_exit event
			*/
			i++;
		}
		free(fields);
	}
	fields = tep_event_fields(event);
	if (fields != NULL) {
		i = 0;
		while (fields[i]) {
			/*
			  walk through the list of the event specific
			  fields of the kvm_exit event
			*/
			i++;
		}
		free(fields);
	}
}
...
--

FILES
-----
[verse]
--
*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
--------
_libtraceevent(3)_, _trace-cmd(1)_

AUTHOR
------
[verse]
--
*Steven Rostedt* <rostedt@goodmis.org>, author of *libtraceevent*.
*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>, author of this man page.
--
REPORTING BUGS
--------------
Report bugs to  <linux-trace-devel@vger.kernel.org>

LICENSE
-------
libtraceevent is Free Software licensed under the GNU LGPL 2.1

RESOURCES
---------
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
