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

NAME
----
tep_get_long_size, tep_set_long_size - Get / set the size of a long integer on
the machine, where the trace is generated, in bytes

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

int *tep_get_long_size*(strucqt tep_handle pass:[*]_tep_);
void *tep_set_long_size*(struct tep_handle pass:[*]_tep_, int _long_size_);
--

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

The _tep_set_long_size()_ function sets the size of a long integer on the machine,
where the trace is generated. The _tep_ argument is trace event parser context.
The _long_size_ is the size of a long integer, in bytes.

RETURN VALUE
------------
The _tep_get_long_size()_ function returns the size of a long integer on the machine,
where the trace is generated, in bytes.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
tep_set_long_size(tep, 4);
...
int long_size = tep_get_long_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
