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, in pt_encode_ip()
242 pos = encoder->pos; in pt_encode_ip()
245 encoder->pos = pt_encode_int(pos, packet->ip, size); in pt_encode_ip()
249 int pt_enc_next(struct pt_encoder *encoder, const struct pt_packet *packet) in pt_enc_next() argument
254 if (!encoder || !packet) in pt_enc_next()
257 pos = begin = encoder->pos; in pt_enc_next()
260 errcode = pt_reserve(encoder, ptps_pad); in pt_enc_next()
266 encoder->pos = pos; in pt_enc_next()
272 errcode = pt_reserve(encoder, ptps_psb); in pt_enc_next()
284 encoder->pos = pos; in pt_enc_next()
289 errcode = pt_reserve(encoder, ptps_psbend); in pt_enc_next()
296 encoder->pos = pos; in pt_enc_next()
300 errcode = pt_reserve(encoder, ptps_ovf); in pt_enc_next()
307 encoder->pos = pos; in pt_enc_next()
311 return pt_encode_ip(encoder, pt_opc_fup, &packet->payload.ip); in pt_enc_next()
314 return pt_encode_ip(encoder, pt_opc_tip, &packet->payload.ip); in pt_enc_next()
317 return pt_encode_ip(encoder, pt_opc_tip_pge, in pt_enc_next()
321 return pt_encode_ip(encoder, pt_opc_tip_pgd, in pt_enc_next()
330 errcode = pt_reserve(encoder, ptps_tnt_8); in pt_enc_next()
340 encoder->pos = pos; in pt_enc_next()
347 errcode = pt_reserve(encoder, ptps_tnt_64); in pt_enc_next()
364 encoder->pos = pos; in pt_enc_next()
371 errcode = pt_reserve(encoder, ptps_mode); in pt_enc_next()
403 encoder->pos = pos; in pt_enc_next()
410 errcode = pt_reserve(encoder, ptps_pip); in pt_enc_next()
425 encoder->pos = pos; in pt_enc_next()
430 errcode = pt_reserve(encoder, ptps_tsc); in pt_enc_next()
438 encoder->pos = pos; in pt_enc_next()
442 errcode = pt_reserve(encoder, ptps_cbr); in pt_enc_next()
451 encoder->pos = pos; in pt_enc_next()
457 errcode = pt_reserve(encoder, ptps_tma); in pt_enc_next()
473 encoder->pos = pos; in pt_enc_next()
478 errcode = pt_reserve(encoder, ptps_mtc); in pt_enc_next()
485 encoder->pos = pos; in pt_enc_next()
517 errcode = pt_reserve(encoder, end); in pt_enc_next()
524 encoder->pos = pos; in pt_enc_next()
529 errcode = pt_reserve(encoder, ptps_stop); in pt_enc_next()
536 encoder->pos = pos; in pt_enc_next()
540 errcode = pt_reserve(encoder, ptps_vmcs); in pt_enc_next()
550 encoder->pos = pos; in pt_enc_next()
554 errcode = pt_reserve(encoder, ptps_mnt); in pt_enc_next()
564 encoder->pos = pos; in pt_enc_next()
570 errcode = pt_reserve(encoder, ptps_exstop); in pt_enc_next()
580 encoder->pos = pos; in pt_enc_next()
585 errcode = pt_reserve(encoder, ptps_mwait); in pt_enc_next()
596 encoder->pos = pos; in pt_enc_next()
602 errcode = pt_reserve(encoder, ptps_pwre); in pt_enc_next()
621 encoder->pos = pos; in pt_enc_next()
628 errcode = pt_reserve(encoder, ptps_pwrx); in pt_enc_next()
651 encoder->pos = pos; in pt_enc_next()
665 errcode = pt_reserve(encoder, in pt_enc_next()
680 encoder->pos = pos; in pt_enc_next()
692 int pt_encode_pad(struct pt_encoder *encoder) in pt_encode_pad() argument
698 return pt_enc_next(encoder, &packet); in pt_encode_pad()
701 int pt_encode_psb(struct pt_encoder *encoder) in pt_encode_psb() argument
707 return pt_enc_next(encoder, &packet); in pt_encode_psb()
710 int pt_encode_psbend(struct pt_encoder *encoder) in pt_encode_psbend() argument
716 return pt_enc_next(encoder, &packet); in pt_encode_psbend()
719 int pt_encode_tip(struct pt_encoder *encoder, uint64_t ip, in pt_encode_tip() argument
728 return pt_enc_next(encoder, &packet); in pt_encode_tip()
731 int pt_encode_tnt_8(struct pt_encoder *encoder, uint8_t tnt, int size) in pt_encode_tnt_8() argument
739 return pt_enc_next(encoder, &packet); in pt_encode_tnt_8()
742 int pt_encode_tnt_64(struct pt_encoder *encoder, uint64_t tnt, int size) in pt_encode_tnt_64() argument
750 return pt_enc_next(encoder, &packet); in pt_encode_tnt_64()
753 int pt_encode_tip_pge(struct pt_encoder *encoder, uint64_t ip, in pt_encode_tip_pge() argument
762 return pt_enc_next(encoder, &packet); in pt_encode_tip_pge()
765 int pt_encode_tip_pgd(struct pt_encoder *encoder, uint64_t ip, in pt_encode_tip_pgd() argument
774 return pt_enc_next(encoder, &packet); in pt_encode_tip_pgd()
777 int pt_encode_fup(struct pt_encoder *encoder, uint64_t ip, in pt_encode_fup() argument
786 return pt_enc_next(encoder, &packet); in pt_encode_fup()
789 int pt_encode_pip(struct pt_encoder *encoder, uint64_t cr3, uint8_t flags) in pt_encode_pip() argument
797 return pt_enc_next(encoder, &packet); in pt_encode_pip()
800 int pt_encode_ovf(struct pt_encoder *encoder) in pt_encode_ovf() argument
806 return pt_enc_next(encoder, &packet); in pt_encode_ovf()
809 int pt_encode_mode_exec(struct pt_encoder *encoder, enum pt_exec_mode mode) in pt_encode_mode_exec() argument
817 return pt_enc_next(encoder, &packet); in pt_encode_mode_exec()
821 int pt_encode_mode_tsx(struct pt_encoder *encoder, uint8_t bits) in pt_encode_mode_tsx() argument
838 return pt_enc_next(encoder, &packet); in pt_encode_mode_tsx()
841 int pt_encode_tsc(struct pt_encoder *encoder, uint64_t tsc) in pt_encode_tsc() argument
848 return pt_enc_next(encoder, &packet); in pt_encode_tsc()
851 int pt_encode_cbr(struct pt_encoder *encoder, uint8_t cbr) in pt_encode_cbr() argument
858 return pt_enc_next(encoder, &packet); in pt_encode_cbr()
861 int pt_encode_tma(struct pt_encoder *encoder, uint16_t ctc, uint16_t fc) in pt_encode_tma() argument
869 return pt_enc_next(encoder, &packet); in pt_encode_tma()
872 int pt_encode_mtc(struct pt_encoder *encoder, uint8_t ctc) in pt_encode_mtc() argument
879 return pt_enc_next(encoder, &packet); in pt_encode_mtc()
882 int pt_encode_cyc(struct pt_encoder *encoder, uint32_t ctc) in pt_encode_cyc() argument
889 return pt_enc_next(encoder, &packet); in pt_encode_cyc()
892 int pt_encode_stop(struct pt_encoder *encoder) in pt_encode_stop() argument
898 return pt_enc_next(encoder, &packet); in pt_encode_stop()
901 int pt_encode_vmcs(struct pt_encoder *encoder, uint64_t payload) in pt_encode_vmcs() argument
908 return pt_enc_next(encoder, &packet); in pt_encode_vmcs()
911 int pt_encode_mnt(struct pt_encoder *encoder, uint64_t payload) in pt_encode_mnt() argument
918 return pt_enc_next(encoder, &packet); in pt_encode_mnt()