• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/processor-trace/libipt/src/

Lines Matching defs:encoder

37 int pt_encoder_init(struct pt_encoder *encoder, const struct pt_config *config)
41 if (!encoder)
44 memset(encoder, 0, sizeof(*encoder));
46 errcode = pt_config_from_user(&encoder->config, config);
50 encoder->pos = encoder->config.begin;
55 void pt_encoder_fini(struct pt_encoder *encoder)
57 (void) encoder;
64 struct pt_encoder *encoder;
67 encoder = malloc(sizeof(*encoder));
68 if (!encoder)
71 errcode = pt_encoder_init(encoder, config);
73 free(encoder);
77 return encoder;
80 void pt_free_encoder(struct pt_encoder *encoder)
82 pt_encoder_fini(encoder);
83 free(encoder);
86 int pt_enc_sync_set(struct pt_encoder *encoder, uint64_t offset)
90 if (!encoder)
93 begin = encoder->config.begin;
94 end = encoder->config.end;
100 encoder->pos = pos;
104 int pt_enc_get_offset(const struct pt_encoder *encoder, uint64_t *offset)
108 if (!encoder || !offset)
111 /* The encoder is synchronized at all times. */
112 raw = encoder->pos;
116 begin = encoder->config.begin;
124 const struct pt_config *pt_enc_get_config(const struct pt_encoder *encoder)
126 if (!encoder)
129 return &encoder->config;
135 * \@encoder's Intel PT buffer.
138 * Returns -pte_internal if \@encoder is NULL.
139 * Returns -pte_internal if \@encoder is not synchronized.
141 static int pt_reserve(const struct pt_encoder *encoder, unsigned int size)
145 if (!encoder)
148 /* The encoder is synchronized at all times. */
149 pos = encoder->pos;
153 begin = encoder->config.begin;
154 end = encoder->config.end;
211 * enough space in \@encoder's Intel PT buffer.
216 * Returns -pte_internal if \@encoder or \@packet is NULL.
219 static int pt_encode_ip(struct pt_encoder *encoder, enum pt_opcode op,
226 if (!encoder || !packet)
233 errcode = pt_reserve(encoder,
242 pos = encoder->pos;
245 encoder->pos = pt_encode_int(pos, packet->ip, size);
249 int pt_enc_next(struct pt_encoder *encoder, const struct pt_packet *packet)
254 if (!encoder || !packet)
257 pos = begin = encoder->pos;
260 errcode = pt_reserve(encoder, ptps_pad);
266 encoder->pos = pos;
272 errcode = pt_reserve(encoder, ptps_psb);
284 encoder->pos = pos;
289 errcode = pt_reserve(encoder, ptps_psbend);
296 encoder->pos = pos;
300 errcode = pt_reserve(encoder, ptps_ovf);
307 encoder->pos = pos;
311 return pt_encode_ip(encoder, pt_opc_fup, &packet->payload.ip);
314 return pt_encode_ip(encoder, pt_opc_tip, &packet->payload.ip);
317 return pt_encode_ip(encoder, pt_opc_tip_pge,
321 return pt_encode_ip(encoder, pt_opc_tip_pgd,
330 errcode = pt_reserve(encoder, ptps_tnt_8);
340 encoder->pos = pos;
347 errcode = pt_reserve(encoder, ptps_tnt_64);
364 encoder->pos = pos;
371 errcode = pt_reserve(encoder, ptps_mode);
403 encoder->pos = pos;
410 errcode = pt_reserve(encoder, ptps_pip);
425 encoder->pos = pos;
430 errcode = pt_reserve(encoder, ptps_tsc);
438 encoder->pos = pos;
442 errcode = pt_reserve(encoder, ptps_cbr);
451 encoder->pos = pos;
457 errcode = pt_reserve(encoder, ptps_tma);
473 encoder->pos = pos;
478 errcode = pt_reserve(encoder, ptps_mtc);
485 encoder->pos = pos;
517 errcode = pt_reserve(encoder, end);
524 encoder->pos = pos;
529 errcode = pt_reserve(encoder, ptps_stop);
536 encoder->pos = pos;
540 errcode = pt_reserve(encoder, ptps_vmcs);
550 encoder->pos = pos;
554 errcode = pt_reserve(encoder, ptps_mnt);
564 encoder->pos = pos;
570 errcode = pt_reserve(encoder, ptps_exstop);
580 encoder->pos = pos;
585 errcode = pt_reserve(encoder, ptps_mwait);
596 encoder->pos = pos;
602 errcode = pt_reserve(encoder, ptps_pwre);
621 encoder->pos = pos;
628 errcode = pt_reserve(encoder, ptps_pwrx);
651 encoder->pos = pos;
665 errcode = pt_reserve(encoder,
680 encoder->pos = pos;
692 int pt_encode_pad(struct pt_encoder *encoder)
698 return pt_enc_next(encoder, &packet);
701 int pt_encode_psb(struct pt_encoder *encoder)
707 return pt_enc_next(encoder, &packet);
710 int pt_encode_psbend(struct pt_encoder *encoder)
716 return pt_enc_next(encoder, &packet);
719 int pt_encode_tip(struct pt_encoder *encoder, uint64_t ip,
728 return pt_enc_next(encoder, &packet);
731 int pt_encode_tnt_8(struct pt_encoder *encoder, uint8_t tnt, int size)
739 return pt_enc_next(encoder, &packet);
742 int pt_encode_tnt_64(struct pt_encoder *encoder, uint64_t tnt, int size)
750 return pt_enc_next(encoder, &packet);
753 int pt_encode_tip_pge(struct pt_encoder *encoder, uint64_t ip,
762 return pt_enc_next(encoder, &packet);
765 int pt_encode_tip_pgd(struct pt_encoder *encoder, uint64_t ip,
774 return pt_enc_next(encoder, &packet);
777 int pt_encode_fup(struct pt_encoder *encoder, uint64_t ip,
786 return pt_enc_next(encoder, &packet);
789 int pt_encode_pip(struct pt_encoder *encoder, uint64_t cr3, uint8_t flags)
797 return pt_enc_next(encoder, &packet);
800 int pt_encode_ovf(struct pt_encoder *encoder)
806 return pt_enc_next(encoder, &packet);
809 int pt_encode_mode_exec(struct pt_encoder *encoder, enum pt_exec_mode mode)
817 return pt_enc_next(encoder, &packet);
821 int pt_encode_mode_tsx(struct pt_encoder *encoder, uint8_t bits)
838 return pt_enc_next(encoder, &packet);
841 int pt_encode_tsc(struct pt_encoder *encoder, uint64_t tsc)
848 return pt_enc_next(encoder, &packet);
851 int pt_encode_cbr(struct pt_encoder *encoder, uint8_t cbr)
858 return pt_enc_next(encoder, &packet);
861 int pt_encode_tma(struct pt_encoder *encoder, uint16_t ctc, uint16_t fc)
869 return pt_enc_next(encoder, &packet);
872 int pt_encode_mtc(struct pt_encoder *encoder, uint8_t ctc)
879 return pt_enc_next(encoder, &packet);
882 int pt_encode_cyc(struct pt_encoder *encoder, uint32_t ctc)
889 return pt_enc_next(encoder, &packet);
892 int pt_encode_stop(struct pt_encoder *encoder)
898 return pt_enc_next(encoder, &packet);
901 int pt_encode_vmcs(struct pt_encoder *encoder, uint64_t payload)
908 return pt_enc_next(encoder, &packet);
911 int pt_encode_mnt(struct pt_encoder *encoder, uint64_t payload)
918 return pt_enc_next(encoder, &packet);