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

NAME
----
tep_get_header_page_size, tep_get_header_timestamp_size, tep_is_old_format -
Get the data stored in the header page, in kernel context.

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

int *tep_get_header_page_size*(struct tep_handle pass:[*]_tep_);
int *tep_get_header_timestamp_size*(struct tep_handle pass:[*]_tep_);
bool *tep_is_old_format*(struct tep_handle pass:[*]_tep_);
--
DESCRIPTION
-----------
These functions retrieve information from kernel context, stored in tracefs
events/header_page. Old kernels do not have header page info, so default values
from user space context are used.

The _tep_get_header_page_size()_ function returns the size of a long integer,
in kernel context. The _tep_ argument is trace event parser context.
This information is retrieved from tracefs events/header_page, "commit" field.

The _tep_get_header_timestamp_size()_ function returns the size of timestamps,
in kernel context. The _tep_ argument is trace event parser context. This
information is retrieved from tracefs events/header_page, "timestamp" field.

The _tep_is_old_format()_ function returns true if the kernel predates
the addition of events/header_page, otherwise it returns false.

RETURN VALUE
------------
The _tep_get_header_page_size()_ function returns the size of a long integer,
in bytes.

The _tep_get_header_timestamp_size()_ function returns the size of timestamps,
in bytes.

The _tep_is_old_format()_ function returns true, if an old kernel is used to
generate the tracing data, which has no event/header_page. If the kernel is new,
or _tep_ is NULL, false is returned.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
	int longsize;
	int timesize;
	bool old;

	longsize = tep_get_header_page_size(tep);
	timesize = tep_get_header_timestamp_size(tep);
	old = tep_is_old_format(tep);

	printf ("%s kernel is used to generate the tracing data.\n",
		old?"Old":"New");
	printf("The size of a long integer is %d bytes.\n", longsize);
	printf("The timestamps size is %d bytes.\n", timesize);
...
--

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
