static struct ptunit_result sync_bwd_null(struct sync_fixture *sfix) { const uint8_t *sync; int errcode; errcode = pt_sync_backward(NULL, sfix->config.begin, &sfix->config); ptu_int_eq(errcode, -pte_internal); errcode = pt_sync_backward(&sync, NULL, &sfix->config); ptu_int_eq(errcode, -pte_internal); errcode = pt_sync_backward(&sync, sfix->config.begin, NULL); ptu_int_eq(errcode, -pte_internal); return ptu_passed(); }
static struct ptunit_result sync_bwd_none(struct sync_fixture *sfix) { const uint8_t *sync; int errcode; errcode = pt_sync_backward(&sync, sfix->config.end, &sfix->config); ptu_int_eq(errcode, -pte_eos); return ptu_passed(); }
static struct ptunit_result sync_bwd_past(struct sync_fixture *sfix) { const uint8_t *sync; int errcode; sfix_encode_psb(sfix->config.end - ptps_psb); errcode = pt_sync_backward(&sync, sfix->config.end - ptps_psb, &sfix->config); ptu_int_eq(errcode, -pte_eos); return ptu_passed(); }
static struct ptunit_result sync_bwd(struct sync_fixture *sfix) { const uint8_t *sync; int errcode; sfix_encode_psb(sfix->config.begin + 0x23); errcode = pt_sync_backward(&sync, sfix->config.end, &sfix->config); ptu_int_eq(errcode, 0); ptu_ptr_eq(sync, sfix->config.begin + 0x23); return ptu_passed(); }
int pt_pkt_sync_backward(struct pt_packet_decoder *decoder) { const uint8_t *pos, *sync; int errcode; if (!decoder) return -pte_invalid; pos = decoder->sync; if (!pos) pos = decoder->config.end; errcode = pt_sync_backward(&sync, pos, &decoder->config); if (errcode < 0) return errcode; decoder->sync = sync; decoder->pos = sync; return 0; }