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

NAME
----
tep_get_page_size, tep_set_page_size - Get / set the size of a memory page on
the machine, where the trace is generated

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

int *tep_get_page_size*(struct tep_handle pass:[*]_tep_);
void *tep_set_page_size*(struct tep_handle pass:[*]_tep_, int _page_size_);
--

DESCRIPTION
-----------
The _tep_get_page_size()_ function returns the size of a memory page on
the machine, where the trace is generated. The _tep_ argument is trace
event parser context.

The _tep_set_page_size()_ function stores in the _tep_ context the size of a
memory page on the machine, where the trace is generated.
The _tep_ argument is trace event parser context.
The _page_size_ argument is the size of a memory page, in bytes.

RETURN VALUE
------------
The _tep_get_page_size()_ function returns size of the memory page, in bytes.

EXAMPLE
-------
[source,c]
--
#include <unistd.h>
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
	int page_size = getpagesize();

	tep_set_page_size(tep, page_size);

	printf("The page size for this machine is %d\n", tep_get_page_size(tep));

--

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
