Home | History | Annotate | Download | only in daemon

Lines Matching refs:trans

84 static void opd_log_ibs_fetch(struct transient * trans)
86 struct ibs_fetch_sample * trans_fetch = ((struct ibs_sample*)(trans->ext))->fetch;
90 trans_ibs_fetch(trans, ibs_fetch_selected_flag);
98 static void opd_log_ibs_op(struct transient * trans)
100 struct ibs_op_sample * trans_op = ((struct ibs_sample*)(trans->ext))->op;
104 trans_ibs_op_mask_reserved(ibs_family, trans);
106 if (trans_ibs_op_rip_invalid(trans) != 0)
109 trans_ibs_op(trans, ibs_op_selected_flag);
110 trans_ibs_op_ls(trans, ibs_op_ls_selected_flag);
111 trans_ibs_op_nb(trans, ibs_op_nb_selected_flag);
112 trans_ibs_op_ls_memaccess(trans);
113 trans_ibs_op_bta(trans);
117 static void opd_put_ibs_sample(struct transient * trans)
121 struct ibs_fetch_sample * trans_fetch = ((struct ibs_sample*)(trans->ext))->fetch;
123 if (!enough_remaining(trans, 1)) {
124 trans->remaining = 0;
132 if (trans->cookie == INVALID_COOKIE
133 && (k_image = find_kernel_image(trans)) != NULL
135 && trans->in_kernel == 0)
136 trans->in_kernel = 1;
138 if (trans->tracing != TRACING_ON)
139 trans->event = event;
142 if (trans->in_kernel != 0)
143 clear_trans_current(trans);
145 if (!trans->in_kernel && trans->cookie == NO_COOKIE)
146 trans->anon = find_anon_mapping(trans);
149 if (!trans->current)
150 trans->current = sfile_find(trans);
156 if (!trans->current)
160 opd_log_ibs_fetch(trans);
162 opd_log_ibs_op(trans);
165 if (trans->tracing == TRACING_START)
166 trans->tracing = TRACING_ON;
168 update_trans_last(trans);
192 void code_ibs_fetch_sample(struct transient * trans)
196 if (!enough_remaining(trans, 7)) {
198 trans->remaining = 0;
205 trans->ext = xmalloc(sizeof(struct ibs_sample));
206 ((struct ibs_sample*)(trans->ext))->fetch = xmalloc(sizeof(struct ibs_fetch_sample));
207 trans_fetch = ((struct ibs_sample*)(trans->ext))->fetch;
209 trans_fetch->rip = pop_buffer_value(trans);
211 trans_fetch->ibs_fetch_lin_addr_low = pop_buffer_value(trans);
212 trans_fetch->ibs_fetch_lin_addr_high = pop_buffer_value(trans);
214 trans_fetch->ibs_fetch_ctl_low = pop_buffer_value(trans);
215 trans_fetch->ibs_fetch_ctl_high = pop_buffer_value(trans);
216 trans_fetch->ibs_fetch_phys_addr_low = pop_buffer_value(trans);
217 trans_fetch->ibs_fetch_phys_addr_high = pop_buffer_value(trans);
221 trans->cpu,
222 (long)trans->tgid,
231 /* Overwrite the trans->pc with the more accurate trans_fetch->rip */
232 trans->pc = trans_fetch->rip;
234 opd_put_ibs_sample(trans);
237 free(trans->ext);
238 trans->ext = NULL;
242 static void get_ibs_op_bta_sample(struct transient * trans,
246 if (!enough_remaining(trans, 2)) {
248 trans->remaining = 0;
254 trans_op->ibs_op_brtgt_addr = pop_buffer_value(trans);
266 void code_ibs_op_sample(struct transient * trans)
270 if (!enough_remaining(trans, 13)) {
272 trans->remaining = 0;
279 trans->ext = xmalloc(sizeof(struct ibs_sample));
280 ((struct ibs_sample*)(trans->ext))->op = xmalloc(sizeof(struct ibs_op_sample));
281 trans_op = ((struct ibs_sample*)(trans->ext))->op;
283 trans_op->rip = pop_buffer_value(trans);
285 trans_op->ibs_op_lin_addr_low = pop_buffer_value(trans);
286 trans_op->ibs_op_lin_addr_high = pop_buffer_value(trans);
288 trans_op->ibs_op_data1_low = pop_buffer_value(trans);
289 trans_op->ibs_op_data1_high = pop_buffer_value(trans);
290 trans_op->ibs_op_data2_low = pop_buffer_value(trans);
291 trans_op->ibs_op_data2_high = pop_buffer_value(trans);
292 trans_op->ibs_op_data3_low = pop_buffer_value(trans);
293 trans_op->ibs_op_data3_high = pop_buffer_value(trans);
294 trans_op->ibs_op_ldst_linaddr_low = pop_buffer_value(trans);
295 trans_op->ibs_op_ldst_linaddr_high = pop_buffer_value(trans);
296 trans_op->ibs_op_phys_addr_low = pop_buffer_value(trans);
297 trans_op->ibs_op_phys_addr_high = pop_buffer_value(trans);
299 get_ibs_op_bta_sample(trans, trans_op);
303 trans->cpu,
304 trans->tgid,
314 /* Overwrite the trans->pc with the more accurate trans_op->rip */
315 trans->pc = trans_op->rip;
317 opd_put_ibs_sample(trans);
320 free(trans->ext);
321 trans->ext = NULL;
344 struct transient * trans)
347 trans->event = event;
348 sfile_log_sample_count(trans, 1);
353 struct transient * trans,
357 trans->event = event;
358 sfile_log_sample_count(trans, count);
750 static odb_t * ibs_sfile_get(struct transient const * trans, int is_cg)
752 struct sfile * sf = trans->current;
753 struct sfile * last = trans->last;
760 /* Note: "trans->event" for IBS is not the same as traditional
764 key = get_ibs_vci_key(trans->event);
766 fprintf(stderr, "%s: Invalid IBS event %lu\n", __func__, trans->event);