8. PopVision trace instrumentation library (PVTI)

PVTI API.

namespace pvti

TraceChannels

PVTI library predefined trace categories.

These predefined channels can be enabled or disabled at runtime. Tracepoints can be created using these channels, or custom channels can be added.

TraceChannel traceDrivers
TraceChannel tracePoplar

Typedefs

typedef struct pvti::TraceChannel TraceChannel

PVTI trace categories type definition.

Use for defining custom channels.

Functions

void enableTraceChannel(TraceChannel *channel)

Enable tracing channel for the session.

PVTI_OPTIONS environment variable must be set, and trace enabled. See “Configuring trace options” for more information.

Parameters
  • channel: A pointer to the channel to be enabled.

void disableTraceChannel(TraceChannel *channel)

Disable tracing channel for the session.

Parameters
  • channel: A pointer to the channel to be disabled.

bool checkTraceChannel(TraceChannel *channel)

Check if tracing channel is enabled.

Return

True if the channel is enabled, false if it is disabled.

Parameters
  • channel: A pointer to the channel to check.

std::vector<TraceChannel*> listTraceChannel(void)

Get a list of all traceChannels in the session.

Return

A vector of pointers to the traceChannels in the session.

std::string getCurrentTraceFilename(void)

Get the current trace session filename.

Return

The current trace session filename.

void closeTrace()

Close the current trace session.

No Tracepoint events should be invoked following this function call.

class Client
#include <pvti.hpp>

PVTI Client class should be added to any singleton which contains PVTI clients like Tracepoint, Graph and Series.

This is to ensure that PVTI Session singleton is created early on and it does not go out of scope before any of its clients.

Public Functions

Client()
class Graph

Public Functions

Graph(const std::string &name, const std::string &unit = "", const bool enable = true)
pvti::Series addSeries(const std::string &name, const bool enable = true)
void enable(void)
void disable(void)
bool check(void) const
int32_t getId(void) const
std::string getName(void) const

Private Members

int32_t id
bool enabled
bool configured
const std::string name
class Series

Public Functions

Series(const std::string &name, const Graph &graph, const bool enable = true)
void add(const double value)
void add(const int value)
void enable(void)
void disable(void)
bool check(void) const

Private Members

bool enabled
bool configured
int32_t id
const Graph &graph
struct TraceChannel
#include <pvti.hpp>

PVTI trace categories type definition.

Use for defining custom channels.

Public Functions

TraceChannel(const char *name, bool enabled = true)

Construct a TraceChannel object, and add it to the current session.

Parameters

Public Members

const char *name
bool enabled
class Tracepoint
#include <pvti.hpp>

Class for managing tracing of events.

Public Functions

Tracepoint(TraceChannel *traceChannel, const std::string traceLabel)

Profile a function or a scope by creating a named stack object of Tracepoint type.

Parameters
  • traceChannel: The channel to create the tracepoint for

  • traceLabel: A unique user-friendly string for this scope’s trace.

Tracepoint(TraceChannel *traceChannel, const char *traceLabel, const int32_t traceLabelLen = -1)

Profile a function or a scope by creating a named stack object of Tracepoint type.

Parameters
  • traceChannel: The channel to create the tracepoint for.

  • traceLabel: A unique user-friendly string for this scope’s trace.

  • traceLabelLen: The number of characters to use from the traceLabel (-1 indicates all).

~Tracepoint()

Invoked on Tracepoint function exit.

Tracepoint(const Tracepoint&) = delete
Tracepoint &operator=(const Tracepoint&) = delete

Public Static Functions

void begin(TraceChannel *traceChannel, const std::string traceLabel)

Start profiling a region using this function.

Should be complemented with an end() to profile between the two.

Parameters
  • traceChannel: The channel to create tracepoints for.

  • traceLabel: A unique user-friendly string for this region’s trace.

void begin(TraceChannel *traceChannel, const char *traceLabel, const int32_t traceLabelLen = -1)

Start profiling a region using this function.

Should be complemented with with an end() to profile between the two.

Parameters
  • traceChannel: The channel to create tracepoints for.

  • traceLabel: A unique user-friendly string for this region’s trace.

  • traceLabelLen: The number of characters to use from the traceLabel (-1 indicates all).

void end(TraceChannel *traceChannel, const std::string traceLabel)

End profiling a region using this function.

Should be the complement to a begin() to profile between the two.

Parameters
  • traceChannel: The channel to create tracepoints for.

  • traceLabel: A unique user-friendly string for this region’s trace.

void end(TraceChannel *traceChannel, const char *traceLabel, const int32_t traceLabelLen = -1)

End profiling a region using this function.

Should be the complement to a begin() to profile between the two.

Parameters
  • traceChannel: The channel to create tracepoints for.

  • traceLabel: A unique user-friendly string for this region’s trace.

  • traceLabelLen: The number of characters to use from the traceLabel (-1 indicates all).

void event(TraceChannel *traceChannel, const std::string traceLabel)

Mark an occurrence to be instrumented.

Can be used to compute duration between two events of the same or different type.

Parameters
  • traceChannel: The channel to create tracepoints for.

  • traceLabel: A unique user-friendly string for this event.

void event(TraceChannel *traceChannel, const char *traceLabel, const int32_t len = -1)

Mark an occurrence to be instrumented.

Can be used to compute duration between two events of same or different type.

Parameters
  • traceChannel: The channel to create tracepoints for.

  • traceLabel: A unique user-friendly string for this event.

  • traceLabelLen: The number of characters to use from the traceLabel (-1 indicates all).

Private Members

TraceChannel *channel
const std::string label
const char *strLabel
const int32_t strLabelLen