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

NAME
----
tep_parse_header_page - Parses the data stored in the header page.

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

int *tep_parse_header_page*(struct tep_handle pass:[*]_tep_, char pass:[*]_buf_, unsigned long _size_, int _long_size_);
--

DESCRIPTION
-----------
The _tep_parse_header_page()_ function parses the header page data from _buf_,
and initializes the _tep_, trace event parser context, with it. The buffer
_buf_ is with _size_, and is supposed to be copied from
tracefs/events/header_page.

Some old kernels do not have header page info, in this case the
_tep_parse_header_page()_ function  can be called with _size_ equal to 0. The
_tep_ context is initialized with default values. The _long_size_ can be used in
this use case, to set the size of a long integer to be used.

RETURN VALUE
------------
The _tep_parse_header_page()_ function returns 0 in case of success, or -1
in case of an error.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
char *buf;
int size;
buf = read_file("/sys/kernel/tracing/events/header_page", &size);
if (tep_parse_header_page(tep, buf, size, sizeof(unsigned long)) != 0) {
	/* Failed to parse the header page */
}
...
--

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
