Lines Matching defs:trans

37 void clear_trans_last(struct transient * trans)
39 trans->last = NULL;
40 trans->last_anon = NULL;
44 void clear_trans_current(struct transient * trans)
46 trans->current = NULL;
47 trans->anon = NULL;
51 uint64_t pop_buffer_value(struct transient * trans)
55 if (!trans->remaining) {
61 uint32_t const * lbuf = (void const *)trans->buffer;
64 uint64_t const * lbuf = (void const *)trans->buffer;
68 trans->remaining--;
69 trans->buffer += kernel_pointer_size;
74 int enough_remaining(struct transient * trans, size_t size)
76 if (trans->remaining >= size)
85 static void opd_put_sample(struct transient * trans, unsigned long long pc)
89 if (!enough_remaining(trans, 1)) {
90 trans->remaining = 0;
94 event = pop_buffer_value(trans);
96 if (trans->tracing != TRACING_ON)
97 trans->event = event;
99 trans->pc = pc;
102 if (trans->in_kernel != 0)
103 clear_trans_current(trans);
105 if (!trans->in_kernel && trans->cookie == NO_COOKIE)
106 trans->anon = find_anon_mapping(trans);
109 if (!trans->current)
110 trans->current = sfile_find(trans);
116 if (!trans->current)
120 if (trans->current->ignored || (trans->last && trans->last->ignored))
124 sfile_log_sample(trans);
128 if (trans->tracing == TRACING_START)
129 trans->tracing = TRACING_ON;
131 update_trans_last(trans);
135 static void code_unknown(struct transient * trans __attribute__((unused)))
142 static void code_ctx_switch(struct transient * trans)
144 clear_trans_current(trans);
146 if (!enough_remaining(trans, 5)) {
147 trans->remaining = 0;
151 trans->tid = pop_buffer_value(trans);
152 trans->app_cookie = pop_buffer_value(trans);
156 pop_buffer_value(trans);
157 pop_buffer_value(trans);
158 trans->tgid = pop_buffer_value(trans);
161 char const * app = find_cookie(trans->app_cookie);
163 (unsigned long)trans->tid, (unsigned long)trans->tgid,
164 trans->app_cookie, app ? app : "none");
169 static void code_cpu_switch(struct transient * trans)
171 clear_trans_current(trans);
173 if (!enough_remaining(trans, 1)) {
174 trans->remaining = 0;
178 trans->cpu = pop_buffer_value(trans);
179 verbprintf(vmisc, "CPU_SWITCH to %lu\n", trans->cpu);
183 static void code_cookie_switch(struct transient * trans)
185 clear_trans_current(trans);
187 if (!enough_remaining(trans, 1)) {
188 trans->remaining = 0;
192 trans->cookie = pop_buffer_value(trans);
195 char const * name = verbose_cookie(trans->cookie);
197 name, trans->cookie);
202 static void code_kernel_enter(struct transient * trans)
205 trans->in_kernel = 1;
206 clear_trans_current(trans);
207 /* subtlety: we must keep trans->cookie cached,
215 static void code_user_enter(struct transient * trans)
218 trans->in_kernel = 0;
219 clear_trans_current(trans);
220 clear_trans_last(trans);
224 static void code_module_loaded(struct transient * trans __attribute__((unused)))
228 clear_trans_current(trans);
229 clear_trans_last(trans);
238 static void code_trace_begin(struct transient * trans)
241 trans->tracing = TRACING_START;
244 static void code_xen_enter(struct transient * trans)
247 trans->in_kernel = 1;
248 trans->current = NULL;
249 /* subtlety: we must keep trans->cookie cached, even though it's
258 extern void code_spu_profiling(struct transient * trans);
259 extern void code_spu_ctx_switch(struct transient * trans);
261 extern void code_ibs_fetch_sample(struct transient * trans);
262 extern void code_ibs_op_sample(struct transient * trans);
292 struct transient trans = {
320 special_processor(&trans);
324 while (trans.remaining) {
325 code = pop_buffer_value(&trans);
328 opd_put_sample(&trans, code);
332 if (!trans.remaining) {
339 code = pop_buffer_value(&trans);
346 handlers[code](&trans);