Lines Matching refs:encoder

37 int pt_encoder_init(struct pt_encoder *encoder, const struct pt_config *config)  in pt_encoder_init()  argument
41 if (!encoder) in pt_encoder_init()
44 memset(encoder, 0, sizeof(*encoder)); in pt_encoder_init()
46 errcode = pt_config_from_user(&encoder->config, config); in pt_encoder_init()
50 encoder->pos = encoder->config.begin; in pt_encoder_init()
55 void pt_encoder_fini(struct pt_encoder *encoder) in pt_encoder_fini() argument
57 (void) encoder; in pt_encoder_fini()
64 struct pt_encoder *encoder; in pt_alloc_encoder() local
67 encoder = malloc(sizeof(*encoder)); in pt_alloc_encoder()
68 if (!encoder) in pt_alloc_encoder()
71 errcode = pt_encoder_init(encoder, config); in pt_alloc_encoder()
73 free(encoder); in pt_alloc_encoder()
77 return encoder; in pt_alloc_encoder()
80 void pt_free_encoder(struct pt_encoder *encoder) in pt_free_encoder() argument
82 pt_encoder_fini(encoder); in pt_free_encoder()
83 free(encoder); in pt_free_encoder()
86 int pt_enc_sync_set(struct pt_encoder *encoder, uint64_t offset) in pt_enc_sync_set() argument
90 if (!encoder) in pt_enc_sync_set()
93 begin = encoder->config.begin; in pt_enc_sync_set()
94 end = encoder->config.end; in pt_enc_sync_set()
100 encoder->pos = pos; in pt_enc_sync_set()
104 int pt_enc_get_offset(const struct pt_encoder *encoder, uint64_t *offset) in pt_enc_get_offset() argument
108 if (!encoder || !offset) in pt_enc_get_offset()
112 raw = encoder->pos; in pt_enc_get_offset()
116 begin = encoder->config.begin; in pt_enc_get_offset()
124 const struct pt_config *pt_enc_get_config(const struct pt_encoder *encoder) in pt_enc_get_config() argument
126 if (!encoder) in pt_enc_get_config()
129 return &encoder->config; in pt_enc_get_config()
141 static int pt_reserve(const struct pt_encoder *encoder, unsigned int size) in pt_reserve() argument
145 if (!encoder) in pt_reserve()
149 pos = encoder->pos; in pt_reserve()
153 begin = encoder->config.begin; in pt_reserve()
154 end = encoder->config.end; in pt_reserve()
219 static int pt_encode_ip(struct pt_encoder *encoder, enum pt_opcode op, in pt_encode_ip() argument
226 if (!encoder || !packet) in pt_encode_ip()
233 errcode = pt_reserve(encoder, /* opc size = */ 1 + size); in pt_encode_ip()
241 pos = encoder->pos; in pt_encode_ip()
244 encoder->pos = pt_encode_int(pos, packet->ip, size); in pt_encode_ip()
248 int pt_enc_next(struct pt_encoder *encoder, const struct pt_packet *packet) in pt_enc_next() argument
253 if (!encoder || !packet) in pt_enc_next()
256 pos = begin = encoder->pos; in pt_enc_next()
259 errcode = pt_reserve(encoder, ptps_pad); in pt_enc_next()
265 encoder->pos = pos; in pt_enc_next()
271 errcode = pt_reserve(encoder, ptps_psb); in pt_enc_next()
283 encoder->pos = pos; in pt_enc_next()
288 errcode = pt_reserve(encoder, ptps_psbend); in pt_enc_next()
295 encoder->pos = pos; in pt_enc_next()
299 errcode = pt_reserve(encoder, ptps_ovf); in pt_enc_next()
306 encoder->pos = pos; in pt_enc_next()
310 return pt_encode_ip(encoder, pt_opc_fup, &packet->payload.ip); in pt_enc_next()
313 return pt_encode_ip(encoder, pt_opc_tip, &packet->payload.ip); in pt_enc_next()
316 return pt_encode_ip(encoder, pt_opc_tip_pge, in pt_enc_next()
320 return pt_encode_ip(encoder, pt_opc_tip_pgd, in pt_enc_next()
329 errcode = pt_reserve(encoder, ptps_tnt_8); in pt_enc_next()
339 encoder->pos = pos; in pt_enc_next()
346 errcode = pt_reserve(encoder, ptps_tnt_64); in pt_enc_next()
363 encoder->pos = pos; in pt_enc_next()
370 errcode = pt_reserve(encoder, ptps_mode); in pt_enc_next()
402 encoder->pos = pos; in pt_enc_next()
409 errcode = pt_reserve(encoder, ptps_pip); in pt_enc_next()
424 encoder->pos = pos; in pt_enc_next()
429 errcode = pt_reserve(encoder, ptps_tsc); in pt_enc_next()
437 encoder->pos = pos; in pt_enc_next()
441 errcode = pt_reserve(encoder, ptps_cbr); in pt_enc_next()
450 encoder->pos = pos; in pt_enc_next()
456 errcode = pt_reserve(encoder, ptps_tma); in pt_enc_next()
472 encoder->pos = pos; in pt_enc_next()
477 errcode = pt_reserve(encoder, ptps_mtc); in pt_enc_next()
484 encoder->pos = pos; in pt_enc_next()
516 errcode = pt_reserve(encoder, end); in pt_enc_next()
523 encoder->pos = pos; in pt_enc_next()
528 errcode = pt_reserve(encoder, ptps_stop); in pt_enc_next()
535 encoder->pos = pos; in pt_enc_next()
539 errcode = pt_reserve(encoder, ptps_vmcs); in pt_enc_next()
549 encoder->pos = pos; in pt_enc_next()
553 errcode = pt_reserve(encoder, ptps_mnt); in pt_enc_next()
563 encoder->pos = pos; in pt_enc_next()
569 errcode = pt_reserve(encoder, ptps_exstop); in pt_enc_next()
579 encoder->pos = pos; in pt_enc_next()
584 errcode = pt_reserve(encoder, ptps_mwait); in pt_enc_next()
595 encoder->pos = pos; in pt_enc_next()
601 errcode = pt_reserve(encoder, ptps_pwre); in pt_enc_next()
620 encoder->pos = pos; in pt_enc_next()
627 errcode = pt_reserve(encoder, ptps_pwrx); in pt_enc_next()
650 encoder->pos = pos; in pt_enc_next()
664 errcode = pt_reserve(encoder, pt_opcs_ptw + size); in pt_enc_next()
678 encoder->pos = pos; in pt_enc_next()
690 int pt_encode_pad(struct pt_encoder *encoder) in pt_encode_pad() argument
696 return pt_enc_next(encoder, &packet); in pt_encode_pad()
699 int pt_encode_psb(struct pt_encoder *encoder) in pt_encode_psb() argument
705 return pt_enc_next(encoder, &packet); in pt_encode_psb()
708 int pt_encode_psbend(struct pt_encoder *encoder) in pt_encode_psbend() argument
714 return pt_enc_next(encoder, &packet); in pt_encode_psbend()
717 int pt_encode_tip(struct pt_encoder *encoder, uint64_t ip, in pt_encode_tip() argument
726 return pt_enc_next(encoder, &packet); in pt_encode_tip()
729 int pt_encode_tnt_8(struct pt_encoder *encoder, uint8_t tnt, int size) in pt_encode_tnt_8() argument
737 return pt_enc_next(encoder, &packet); in pt_encode_tnt_8()
740 int pt_encode_tnt_64(struct pt_encoder *encoder, uint64_t tnt, int size) in pt_encode_tnt_64() argument
748 return pt_enc_next(encoder, &packet); in pt_encode_tnt_64()
751 int pt_encode_tip_pge(struct pt_encoder *encoder, uint64_t ip, in pt_encode_tip_pge() argument
760 return pt_enc_next(encoder, &packet); in pt_encode_tip_pge()
763 int pt_encode_tip_pgd(struct pt_encoder *encoder, uint64_t ip, in pt_encode_tip_pgd() argument
772 return pt_enc_next(encoder, &packet); in pt_encode_tip_pgd()
775 int pt_encode_fup(struct pt_encoder *encoder, uint64_t ip, in pt_encode_fup() argument
784 return pt_enc_next(encoder, &packet); in pt_encode_fup()
787 int pt_encode_pip(struct pt_encoder *encoder, uint64_t cr3, uint8_t flags) in pt_encode_pip() argument
795 return pt_enc_next(encoder, &packet); in pt_encode_pip()
798 int pt_encode_ovf(struct pt_encoder *encoder) in pt_encode_ovf() argument
804 return pt_enc_next(encoder, &packet); in pt_encode_ovf()
807 int pt_encode_mode_exec(struct pt_encoder *encoder, enum pt_exec_mode mode) in pt_encode_mode_exec() argument
815 return pt_enc_next(encoder, &packet); in pt_encode_mode_exec()
819 int pt_encode_mode_tsx(struct pt_encoder *encoder, uint8_t bits) in pt_encode_mode_tsx() argument
836 return pt_enc_next(encoder, &packet); in pt_encode_mode_tsx()
839 int pt_encode_tsc(struct pt_encoder *encoder, uint64_t tsc) in pt_encode_tsc() argument
846 return pt_enc_next(encoder, &packet); in pt_encode_tsc()
849 int pt_encode_cbr(struct pt_encoder *encoder, uint8_t cbr) in pt_encode_cbr() argument
856 return pt_enc_next(encoder, &packet); in pt_encode_cbr()
859 int pt_encode_tma(struct pt_encoder *encoder, uint16_t ctc, uint16_t fc) in pt_encode_tma() argument
867 return pt_enc_next(encoder, &packet); in pt_encode_tma()
870 int pt_encode_mtc(struct pt_encoder *encoder, uint8_t ctc) in pt_encode_mtc() argument
877 return pt_enc_next(encoder, &packet); in pt_encode_mtc()
880 int pt_encode_cyc(struct pt_encoder *encoder, uint32_t ctc) in pt_encode_cyc() argument
887 return pt_enc_next(encoder, &packet); in pt_encode_cyc()
890 int pt_encode_stop(struct pt_encoder *encoder) in pt_encode_stop() argument
896 return pt_enc_next(encoder, &packet); in pt_encode_stop()
899 int pt_encode_vmcs(struct pt_encoder *encoder, uint64_t payload) in pt_encode_vmcs() argument
906 return pt_enc_next(encoder, &packet); in pt_encode_vmcs()
909 int pt_encode_mnt(struct pt_encoder *encoder, uint64_t payload) in pt_encode_mnt() argument
916 return pt_enc_next(encoder, &packet); in pt_encode_mnt()