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

NAME
----
tep_get_cpus, tep_set_cpus - Get / set the number of CPUs, which have a tracing
buffer representing it. Note, the buffer may be empty.

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

int *tep_get_cpus*(struct tep_handle pass:[*]_tep_);
void *tep_set_cpus*(struct tep_handle pass:[*]_tep_, int _cpus_);
--

DESCRIPTION
-----------
The _tep_get_cpus()_ function gets the number of CPUs, which have a tracing
buffer representing it. The _tep_ argument is trace event parser context.

The _tep_set_cpus()_ function sets the number of CPUs, which have a tracing
buffer representing it. The _tep_ argument is trace event parser context.
The _cpu_ argument is the number of CPUs with tracing data.

RETURN VALUE
------------
The _tep_get_cpus()_ functions returns the number of CPUs, which have tracing
data recorded.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
	tep_set_cpus(tep, 5);
...
	printf("We have tracing data for %d CPUs", tep_get_cpus(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
