PT_ALLOC_ENCODER(3)

NAME

pt_alloc_encoder, pt_free_encoder - allocate/free an Intel(R) Processor Trace packet encoder

SYNOPSIS

#include <intel-pt.h>
struct pt_packet_encoder *
pt_alloc_encoder(const struct pt_config *config);
void pt_free_encoder(struct pt_packet_encoder *encoder);

Link with -lipt.

DESCRIPTION

pt_alloc_encoder() allocates a new Intel Processor Trace (Intel PT) packet encoder and returns a pointer to it. The packet encoder generates Intel PT trace from pt_packet objects. See pt_enc_next(3).

The config argument points to a pt_config object. See pt_config(3). The config argument will not be referenced by the returned encoder but the trace buffer defined by the config argument’s begin and end fields will.

The returned packet encoder is initially synchronized onto the beginning of the trace buffer specified in its config argument. Use pt_enc_sync_set(3) to move it to any other position inside the trace buffer.

pt_free_encoder() frees the Intel PT packet encoder pointed to by encoder. The encoder argument must be NULL or point to an encoder that has been *allocated by a call to pt_alloc_encoder().

RETURN VALUE

pt_alloc_encoder() returns a pointer to a pt_packet_encoder object on success or NULL in case of an error.

EXAMPLE

    int foo(const struct pt_config *config) {
        struct pt_packet_encoder *encoder;
        errcode;
        encoder = pt_alloc_encoder(config);
        if (!encoder)
            return pte_nomem;
        errcode = bar(encoder);
        pt_free_encoder(encoder);
        return errcode;
    }

SEE ALSO

pt_config(3), pt_enc_sync_set(3), pt_enc_get_offset(3), pt_enc_get_config(3), pt_enc_next(3)