pt_pkt_sync_forward - Man Page
synchronize an Intel(R) Processor Trace packet decoder
Synopsis
#include <intel-pt.h>
int pt_pkt_sync_forward(struct pt_packet_decoder *decoder);
int pt_pkt_sync_backward(struct pt_packet_decoder *decoder);
int pt_pkt_sync_set(struct pt_packet_decoder *decoder,
uint64_t offset);
Link with -lipt.
Description
pt_pkt_sync_forward() and pt_pkt_sync_backward() synchronize an Intel Processor Trace (Intel PT) packet decoder pointed to by decoder onto the trace stream in decoder’s trace buffer. They search for a Packet Stream Boundary (PSB) packet in the trace stream and, if successful, set decoder’s current position to that packet.
pt_pkt_sync_forward() searches in forward direction from decoder’s current position towards the end of the trace buffer. If decoder has been newly allocated and has not been synchronized yet, the search starts from the beginning of the trace.
pt_pkt_sync_backward() searches in backward direction from decoder’s current position towards the beginning of the trace buffer. If decoder has been newly allocated and has not been synchronized yet, the search starts from the end of the trace.
pt_pkt_sync_set() sets decoder’s current position to offset bytes from the beginning of its trace buffer.
Return Value
All synchronization functions return zero or a positive value on success or a negative pt_error_code enumeration constant in case of an error.
Errors
- pte_invalid
The decoder argument is NULL.
- pte_eos
There is no (further) PSB packet in the trace stream (pt_pkt_sync_forward() and pt_pkt_sync_backward()) or the offset argument is too big and the resulting position would be outside of decoder’s trace buffer (pt_pkt_sync_set()).
Example
The following example re-synchronizes an Intel PT packet decoder after decode errors:
int foo(struct pt_packet_decoder *decoder) { for (;;) { int errcode; errcode = pt_pkt_sync_forward(decoder); if (errcode < 0) return errcode; do { errcode = decode(decoder); } while (errcode >= 0); } }
See Also
pt_pkt_alloc_decoder(3), pt_pkt_free_decoder(3), pt_pkt_get_offset(3), pt_pkt_get_sync_offset(3), pt_pkt_get_config(3), pt_pkt_next(3)
Referenced By
pt_packet(3), pt_pkt_alloc_decoder(3), pt_pkt_get_offset(3).
The man pages pt_pkt_sync_backward(3) and pt_pkt_sync_set(3) are aliases of pt_pkt_sync_forward(3).