Home | History | Annotate | Download | only in daemon

Lines Matching refs:trans

72 static void opd_log_ibs_fetch(struct transient * trans)
74 struct ibs_fetch_sample * trans_fetch = ((struct ibs_sample*)(trans->ext))->fetch;
78 trans_ibs_fetch(trans, ibs_fetch_selected_flag, ibs_fetch_selected_size);
86 static void opd_log_ibs_op(struct transient * trans)
88 struct ibs_op_sample * trans_op = ((struct ibs_sample*)(trans->ext))->op;
92 trans_ibs_op(trans, ibs_op_selected_flag, ibs_op_selected_size);
93 trans_ibs_op_ls(trans, ibs_op_ls_selected_flag, ibs_op_ls_selected_size);
94 trans_ibs_op_nb(trans, ibs_op_nb_selected_flag, ibs_op_nb_selected_size);
98 static void opd_put_ibs_sample(struct transient * trans)
102 struct ibs_fetch_sample * trans_fetch = ((struct ibs_sample*)(trans->ext))->fetch;
104 if (!enough_remaining(trans, 1)) {
105 trans->remaining = 0;
113 if (trans->cookie == INVALID_COOKIE
114 && (k_image = find_kernel_image(trans)) != NULL
116 && trans->in_kernel == 0)
117 trans->in_kernel = 1;
119 if (trans->tracing != TRACING_ON)
120 trans->event = event;
123 if (trans->in_kernel != 0)
124 clear_trans_current(trans);
126 if (!trans->in_kernel && trans->cookie == NO_COOKIE)
127 trans->anon = find_anon_mapping(trans);
130 if (!trans->current)
131 trans->current = sfile_find(trans);
137 if (!trans->current)
141 opd_log_ibs_fetch(trans);
143 opd_log_ibs_op(trans);
146 if (trans->tracing == TRACING_START)
147 trans->tracing = TRACING_ON;
149 update_trans_last(trans);
153 void code_ibs_fetch_sample(struct transient * trans)
157 if (!enough_remaining(trans, 7)) {
159 trans->remaining = 0;
166 trans->ext = xmalloc(sizeof(struct ibs_sample));
167 ((struct ibs_sample*)(trans->ext))->fetch = xmalloc(sizeof(struct ibs_fetch_sample));
168 trans_fetch = ((struct ibs_sample*)(trans->ext))->fetch;
170 trans_fetch->rip = pop_buffer_value(trans);
172 trans_fetch->ibs_fetch_lin_addr_low = pop_buffer_value(trans);
173 trans_fetch->ibs_fetch_lin_addr_high = pop_buffer_value(trans);
175 trans_fetch->ibs_fetch_ctl_low = pop_buffer_value(trans);
176 trans_fetch->ibs_fetch_ctl_high = pop_buffer_value(trans);
177 trans_fetch->ibs_fetch_phys_addr_low = pop_buffer_value(trans);
178 trans_fetch->ibs_fetch_phys_addr_high = pop_buffer_value(trans);
182 trans->cpu,
183 (long)trans->tgid,
192 /* Overwrite the trans->pc with the more accurate trans_fetch->rip */
193 trans->pc = trans_fetch->rip;
195 opd_put_ibs_sample(trans);
198 free(trans->ext);
199 trans->ext = NULL;
203 void code_ibs_op_sample(struct transient * trans)
207 if (!enough_remaining(trans, 13)) {
209 trans->remaining = 0;
216 trans->ext = xmalloc(sizeof(struct ibs_sample));
217 ((struct ibs_sample*)(trans->ext))->op = xmalloc(sizeof(struct ibs_op_sample));
218 trans_op = ((struct ibs_sample*)(trans->ext))->op;
220 trans_op->rip = pop_buffer_value(trans);
222 trans_op->ibs_op_lin_addr_low = pop_buffer_value(trans);
223 trans_op->ibs_op_lin_addr_high = pop_buffer_value(trans);
225 trans_op->ibs_op_data1_low = pop_buffer_value(trans);
226 trans_op->ibs_op_data1_high = pop_buffer_value(trans);
227 trans_op->ibs_op_data2_low = pop_buffer_value(trans);
228 trans_op->ibs_op_data2_high = pop_buffer_value(trans);
229 trans_op->ibs_op_data3_low = pop_buffer_value(trans);
230 trans_op->ibs_op_data3_high = pop_buffer_value(trans);
231 trans_op->ibs_op_ldst_linaddr_low = pop_buffer_value(trans);
232 trans_op->ibs_op_ldst_linaddr_high = pop_buffer_value(trans);
233 trans_op->ibs_op_phys_addr_low = pop_buffer_value(trans);
234 trans_op->ibs_op_phys_addr_high = pop_buffer_value(trans);
238 trans->cpu,
239 trans->tgid,
249 /* Overwrite the trans->pc with the more accurate trans_op->rip */
250 trans->pc = trans_op->rip;
252 opd_put_ibs_sample(trans);
255 free(trans->ext);
256 trans->ext = NULL;
279 struct transient * trans)
282 trans->event = event;
283 sfile_log_sample_count(trans, 1);
288 struct transient * trans,
292 trans->event = event;
293 sfile_log_sample_count(trans, count);
597 static odb_t * ibs_sfile_get(struct transient const * trans, int is_cg)
599 struct sfile * sf = trans->current;
600 struct sfile * last = trans->last;
607 /* Note: "trans->event" for IBS is not the same as traditional
611 key = get_ibs_vci_key(trans->event);
613 fprintf(stderr, "%s: Invalid IBS event %lu\n", __func__, trans->event);