21 #define TRACE_SYSTEM cobalt_core 23 #if !defined(_TRACE_COBALT_CORE_H) || defined(TRACE_HEADER_MULTI_READ) 24 #define _TRACE_COBALT_CORE_H 26 #include <linux/tracepoint.h> 28 DECLARE_EVENT_CLASS(thread_event,
29 TP_PROTO(
struct xnthread *thread),
33 __field(
struct xnthread *, thread)
34 __string(name, thread->name)
36 __field(
unsigned long, state)
37 __field(
unsigned long, info)
41 __entry->thread = thread;
42 __assign_str(name, thread->name);
43 __entry->state = thread->state;
44 __entry->info = thread->info;
45 __entry->pid = xnthread_host_pid(thread);
48 TP_printk(
"thread=%p(%s) pid=%d state=0x%lx info=0x%lx",
49 __entry->thread, __get_str(name), __entry->pid,
50 __entry->state, __entry->info)
53 DECLARE_EVENT_CLASS(synch_wait_event,
54 TP_PROTO(
struct xnsynch *synch,
struct xnthread *thread),
55 TP_ARGS(synch, thread),
58 __field(
struct xnthread *, thread)
59 __string(name, thread->name)
60 __field(
struct xnsynch *, synch)
64 __entry->thread = thread;
65 __assign_str(name, thread->name);
66 __entry->synch = synch;
69 TP_printk(
"synch=%p thread=%p(%s)",
70 __entry->synch, __entry->thread, __get_str(name))
73 DECLARE_EVENT_CLASS(synch_post_event,
74 TP_PROTO(
struct xnsynch *synch),
78 __field(
struct xnsynch *, synch)
82 __entry->synch = synch;
85 TP_printk(
"synch=%p", __entry->synch)
88 DECLARE_EVENT_CLASS(irq_event,
89 TP_PROTO(
unsigned int irq),
93 __field(
unsigned int, irq)
100 TP_printk(
"irq=%u", __entry->irq)
103 DECLARE_EVENT_CLASS(clock_event,
104 TP_PROTO(
unsigned int irq),
108 __field(
unsigned int, irq)
115 TP_printk(
"clock_irq=%u", __entry->irq)
118 DECLARE_EVENT_CLASS(thread_migrate,
119 TP_PROTO(
struct xnthread *thread,
unsigned int cpu),
120 TP_ARGS(thread, cpu),
123 __field(
struct xnthread *, thread)
124 __string(name, thread->name)
125 __field(
unsigned int, cpu)
129 __entry->thread = thread;
130 __assign_str(name, thread->name);
134 TP_printk(
"thread=%p(%s) cpu=%u",
135 __entry->thread, __get_str(name), __entry->cpu)
138 DECLARE_EVENT_CLASS(timer_event,
139 TP_PROTO(
struct xntimer *timer),
143 __field(
struct xntimer *, timer)
147 __entry->timer = timer;
150 TP_printk(
"timer=%p", __entry->timer)
153 TRACE_EVENT(cobalt_schedule,
154 TP_PROTO(
struct xnsched *sched),
158 __field(
unsigned long, status)
162 __entry->status = sched->
status;
165 TP_printk(
"status=0x%lx", __entry->status)
168 TRACE_EVENT(cobalt_schedule_remote,
169 TP_PROTO(
struct xnsched *sched),
173 __field(
unsigned long, status)
177 __entry->status = sched->
status;
180 TP_printk(
"status=0x%lx", __entry->status)
183 TRACE_EVENT(cobalt_switch_context,
184 TP_PROTO(
struct xnthread *prev,
struct xnthread *next),
188 __field(
struct xnthread *, prev)
189 __field(
struct xnthread *, next)
190 __string(prev_name, prev->name)
191 __string(next_name, next->name)
195 __entry->prev = prev;
196 __entry->next = next;
197 __assign_str(prev_name, prev->name);
198 __assign_str(next_name, next->name);
201 TP_printk(
"prev=%p(%s) next=%p(%s)",
202 __entry->prev, __get_str(prev_name),
203 __entry->next, __get_str(next_name))
206 TRACE_EVENT(cobalt_thread_init,
207 TP_PROTO(
struct xnthread *thread,
208 const struct xnthread_init_attr *attr,
209 struct xnsched_class *sched_class),
210 TP_ARGS(thread, attr, sched_class),
213 __field(
struct xnthread *, thread)
214 __string(thread_name, thread->name)
215 __string(class_name, sched_class->name)
216 __field(
unsigned long, flags)
221 __entry->thread = thread;
222 __assign_str(thread_name, thread->name);
223 __entry->flags = attr->flags;
224 __assign_str(class_name, sched_class->name);
225 __entry->cprio = thread->cprio;
228 TP_printk(
"thread=%p(%s) flags=0x%lx class=%s prio=%d",
229 __entry->thread, __get_str(thread_name), __entry->flags,
230 __get_str(class_name), __entry->cprio)
233 TRACE_EVENT(cobalt_thread_suspend,
234 TP_PROTO(
struct xnthread *thread,
unsigned long mask, xnticks_t timeout,
235 xntmode_t timeout_mode,
struct xnsynch *wchan),
236 TP_ARGS(thread, mask, timeout, timeout_mode, wchan),
239 __field(
struct xnthread *, thread)
240 __field(
unsigned long, mask)
241 __field(xnticks_t, timeout)
242 __field(xntmode_t, timeout_mode)
243 __field(
struct xnsynch *, wchan)
247 __entry->thread = thread;
248 __entry->mask = mask;
249 __entry->timeout = timeout;
250 __entry->timeout_mode = timeout_mode;
251 __entry->wchan = wchan;
254 TP_printk(
"thread=%p mask=0x%lx timeout=%Lu timeout_mode=%d wchan=%p",
255 __entry->thread, __entry->mask,
256 __entry->timeout, __entry->timeout_mode, __entry->wchan)
259 TRACE_EVENT(cobalt_thread_resume,
260 TP_PROTO(
struct xnthread *thread,
unsigned long mask),
261 TP_ARGS(thread, mask),
264 __field(
struct xnthread *, thread)
265 __field(
unsigned long, mask)
269 __entry->thread = thread;
270 __entry->mask = mask;
273 TP_printk(
"thread=%p mask=0x%lx",
274 __entry->thread, __entry->mask)
277 TRACE_EVENT(cobalt_thread_fault,
278 TP_PROTO(
struct xnthread *thread,
struct ipipe_trap_data *td),
282 __field(
struct xnthread *, thread)
283 __string(name, thread->name)
285 __field(
unsigned int, type)
289 __entry->thread = thread;
290 __assign_str(name, thread->name);
291 __entry->ip = (
void *)xnarch_fault_pc(td);
292 __entry->type = xnarch_fault_trap(td);
295 TP_printk(
"thread=%p(%s) ip=%p type=%x",
296 __entry->thread, __get_str(name), __entry->ip,
300 DEFINE_EVENT(thread_event, cobalt_thread_start,
301 TP_PROTO(
struct xnthread *thread),
305 DEFINE_EVENT(thread_event, cobalt_thread_cancel,
306 TP_PROTO(
struct xnthread *thread),
310 DEFINE_EVENT(thread_event, cobalt_thread_join,
311 TP_PROTO(
struct xnthread *thread),
315 DEFINE_EVENT(thread_event, cobalt_thread_unblock,
316 TP_PROTO(
struct xnthread *thread),
320 DEFINE_EVENT(thread_event, cobalt_thread_wait_period,
321 TP_PROTO(
struct xnthread *thread),
325 DEFINE_EVENT(thread_event, cobalt_thread_missed_period,
326 TP_PROTO(
struct xnthread *thread),
330 DEFINE_EVENT(thread_event, cobalt_thread_set_mode,
331 TP_PROTO(
struct xnthread *thread),
335 DEFINE_EVENT(thread_migrate, cobalt_thread_migrate,
336 TP_PROTO(
struct xnthread *thread,
unsigned int cpu),
340 DEFINE_EVENT(thread_migrate, cobalt_thread_migrate_passive,
341 TP_PROTO(
struct xnthread *thread,
unsigned int cpu),
345 DEFINE_EVENT(thread_event, cobalt_shadow_gohard,
346 TP_PROTO(
struct xnthread *thread),
350 DEFINE_EVENT(thread_event, cobalt_watchdog_signal,
351 TP_PROTO(
struct xnthread *thread),
355 DEFINE_EVENT(thread_event, cobalt_shadow_hardened,
356 TP_PROTO(
struct xnthread *thread),
360 #define cobalt_print_relax_reason(reason) \ 361 __print_symbolic(reason, \ 362 { SIGDEBUG_UNDEFINED, "undefined" }, \ 363 { SIGDEBUG_MIGRATE_SIGNAL, "signal" }, \ 364 { SIGDEBUG_MIGRATE_SYSCALL, "syscall" }, \ 365 { SIGDEBUG_MIGRATE_FAULT, "fault" }) 367 TRACE_EVENT(cobalt_shadow_gorelax,
368 TP_PROTO(
struct xnthread *thread,
int reason),
369 TP_ARGS(thread, reason),
372 __field(
struct xnthread *, thread)
377 __entry->thread = thread;
378 __entry->reason = reason;
381 TP_printk(
"thread=%p reason=%s",
382 __entry->thread, cobalt_print_relax_reason(__entry->reason))
385 DEFINE_EVENT(thread_event, cobalt_shadow_relaxed,
386 TP_PROTO(
struct xnthread *thread),
390 DEFINE_EVENT(thread_event, cobalt_shadow_entry,
391 TP_PROTO(
struct xnthread *thread),
395 TRACE_EVENT(cobalt_shadow_map,
396 TP_PROTO(
struct xnthread *thread),
400 __field(
struct xnthread *, thread)
401 __string(name, thread->name)
406 __entry->thread = thread;
407 __assign_str(name, thread->name);
408 __entry->prio = xnthread_base_priority(thread);
411 TP_printk(
"thread=%p(%s) prio=%d",
412 __entry->thread, __get_str(name), __entry->prio)
415 DEFINE_EVENT(thread_event, cobalt_shadow_unmap,
416 TP_PROTO(
struct xnthread *thread),
420 TRACE_EVENT(cobalt_lostage_request,
421 TP_PROTO(
const char *type,
struct task_struct *task),
426 __array(
char, comm, TASK_COMM_LEN)
427 __field(
const char *, type)
431 __entry->type = type;
432 __entry->pid = task_pid_nr(task);
433 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
436 TP_printk(
"request=%s pid=%d comm=%s",
437 __entry->type, __entry->pid, __entry->comm)
440 TRACE_EVENT(cobalt_lostage_wakeup,
441 TP_PROTO(
struct task_struct *task),
446 __array(
char, comm, TASK_COMM_LEN)
450 __entry->pid = task_pid_nr(task);
451 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
454 TP_printk(
"pid=%d comm=%s",
455 __entry->pid, __entry->comm)
458 TRACE_EVENT(cobalt_lostage_signal,
459 TP_PROTO(
struct task_struct *task,
int sig),
464 __array(
char, comm, TASK_COMM_LEN)
469 __entry->pid = task_pid_nr(task);
471 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
474 TP_printk(
"pid=%d comm=%s sig=%d",
475 __entry->pid, __entry->comm, __entry->sig)
478 DEFINE_EVENT(irq_event, cobalt_irq_entry,
479 TP_PROTO(
unsigned int irq),
483 DEFINE_EVENT(irq_event, cobalt_irq_exit,
484 TP_PROTO(
unsigned int irq),
488 DEFINE_EVENT(irq_event, cobalt_irq_attach,
489 TP_PROTO(
unsigned int irq),
493 DEFINE_EVENT(irq_event, cobalt_irq_detach,
494 TP_PROTO(
unsigned int irq),
498 DEFINE_EVENT(irq_event, cobalt_irq_enable,
499 TP_PROTO(
unsigned int irq),
503 DEFINE_EVENT(irq_event, cobalt_irq_disable,
504 TP_PROTO(
unsigned int irq),
508 DEFINE_EVENT(clock_event, cobalt_clock_entry,
509 TP_PROTO(
unsigned int irq),
513 DEFINE_EVENT(clock_event, cobalt_clock_exit,
514 TP_PROTO(
unsigned int irq),
518 DEFINE_EVENT(timer_event, cobalt_timer_stop,
519 TP_PROTO(
struct xntimer *timer),
523 DEFINE_EVENT(timer_event, cobalt_timer_expire,
524 TP_PROTO(
struct xntimer *timer),
528 #define cobalt_print_timer_mode(mode) \ 529 __print_symbolic(mode, \ 530 { XN_RELATIVE, "rel" }, \ 531 { XN_ABSOLUTE, "abs" }, \ 532 { XN_REALTIME, "rt" }) 534 TRACE_EVENT(cobalt_timer_start,
535 TP_PROTO(
struct xntimer *timer, xnticks_t value, xnticks_t interval,
537 TP_ARGS(timer, value, interval, mode),
540 __field(
struct xntimer *, timer)
541 #ifdef CONFIG_XENO_OPT_STATS
542 __string(name, timer->name)
544 __field(xnticks_t, value)
545 __field(xnticks_t, interval)
546 __field(xntmode_t, mode)
550 __entry->timer = timer;
551 #ifdef CONFIG_XENO_OPT_STATS
552 __assign_str(name, timer->name);
554 __entry->value = value;
555 __entry->interval = interval;
556 __entry->mode = mode;
559 TP_printk(
"timer=%p(%s) value=%Lu interval=%Lu mode=%s",
561 #ifdef CONFIG_XENO_OPT_STATS
566 __entry->value, __entry->interval,
567 cobalt_print_timer_mode(__entry->mode))
572 TRACE_EVENT(cobalt_timer_migrate,
573 TP_PROTO(
struct xntimer *timer,
unsigned int cpu),
577 __field(
struct xntimer *, timer)
578 __field(
unsigned int, cpu)
582 __entry->timer = timer;
586 TP_printk(
"timer=%p cpu=%u",
587 __entry->timer, __entry->cpu)
592 DEFINE_EVENT(synch_wait_event, cobalt_synch_sleepon,
593 TP_PROTO(
struct xnsynch *synch,
struct xnthread *thread),
594 TP_ARGS(synch, thread)
597 DEFINE_EVENT(synch_wait_event, cobalt_synch_try_acquire,
598 TP_PROTO(
struct xnsynch *synch,
struct xnthread *thread),
599 TP_ARGS(synch, thread)
602 DEFINE_EVENT(synch_wait_event, cobalt_synch_acquire,
603 TP_PROTO(
struct xnsynch *synch,
struct xnthread *thread),
604 TP_ARGS(synch, thread)
607 DEFINE_EVENT(synch_post_event, cobalt_synch_release,
608 TP_PROTO(
struct xnsynch *synch),
612 DEFINE_EVENT(synch_post_event, cobalt_synch_wakeup,
613 TP_PROTO(
struct xnsynch *synch),
617 DEFINE_EVENT(synch_post_event, cobalt_synch_wakeup_many,
618 TP_PROTO(
struct xnsynch *synch),
622 DEFINE_EVENT(synch_post_event, cobalt_synch_flush,
623 TP_PROTO(
struct xnsynch *synch),
627 DEFINE_EVENT(synch_post_event, cobalt_synch_forget,
628 TP_PROTO(
struct xnsynch *synch),
635 #undef TRACE_INCLUDE_PATH 636 #undef TRACE_INCLUDE_FILE 637 #define TRACE_INCLUDE_FILE cobalt-core 638 #include <trace/define_trace.h> Scheduling information structure.
Definition: sched.h:57
unsigned long status
Definition: sched.h:59