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),
34 __field(
unsigned long, state)
35 __field(
unsigned long, info)
39 __entry->state = thread->state;
40 __entry->info = thread->info;
41 __entry->pid = xnthread_host_pid(thread);
44 TP_printk(
"pid=%d state=0x%lx info=0x%lx",
45 __entry->pid, __entry->state, __entry->info)
48 DECLARE_EVENT_CLASS(curr_thread_event,
49 TP_PROTO(
struct xnthread *thread),
53 __field(
struct xnthread *, thread)
54 __field(
unsigned long, state)
55 __field(
unsigned long, info)
59 __entry->state = thread->state;
60 __entry->info = thread->info;
63 TP_printk(
"state=0x%lx info=0x%lx",
64 __entry->state, __entry->info)
67 DECLARE_EVENT_CLASS(synch_wait_event,
68 TP_PROTO(
struct xnsynch *synch),
72 __field(
struct xnsynch *, synch)
76 __entry->synch = synch;
79 TP_printk(
"synch=%p", __entry->synch)
82 DECLARE_EVENT_CLASS(synch_post_event,
83 TP_PROTO(
struct xnsynch *synch),
87 __field(
struct xnsynch *, synch)
91 __entry->synch = synch;
94 TP_printk(
"synch=%p", __entry->synch)
97 DECLARE_EVENT_CLASS(irq_event,
98 TP_PROTO(
unsigned int irq),
102 __field(
unsigned int, irq)
109 TP_printk(
"irq=%u", __entry->irq)
112 DECLARE_EVENT_CLASS(clock_event,
113 TP_PROTO(
unsigned int irq),
117 __field(
unsigned int, irq)
124 TP_printk(
"clock_irq=%u", __entry->irq)
127 DECLARE_EVENT_CLASS(timer_event,
128 TP_PROTO(
struct xntimer *timer),
132 __field(
struct xntimer *, timer)
136 __entry->timer = timer;
139 TP_printk(
"timer=%p", __entry->timer)
142 TRACE_EVENT(cobalt_schedule,
143 TP_PROTO(
struct xnsched *sched),
147 __field(
unsigned long, status)
151 __entry->status = sched->
status;
154 TP_printk(
"status=0x%lx", __entry->status)
157 TRACE_EVENT(cobalt_schedule_remote,
158 TP_PROTO(
struct xnsched *sched),
162 __field(
unsigned long, status)
166 __entry->status = sched->
status;
169 TP_printk(
"status=0x%lx", __entry->status)
172 TRACE_EVENT(cobalt_switch_context,
173 TP_PROTO(
struct xnthread *prev,
struct xnthread *next),
177 __field(
struct xnthread *, prev)
178 __string(prev_name, prev->name)
179 __field(pid_t, prev_pid)
180 __field(
int, prev_prio)
181 __field(
unsigned long, prev_state)
182 __field(
struct xnthread *, next)
183 __string(next_name, next->name)
184 __field(pid_t, next_pid)
185 __field(
int, next_prio)
189 __entry->prev = prev;
190 __assign_str(prev_name, prev->name);
191 __entry->prev_pid = xnthread_host_pid(prev);
192 __entry->prev_prio = xnthread_current_priority(prev);
193 __entry->prev_state = prev->state;
194 __entry->next = next;
195 __assign_str(next_name, next->name);
196 __entry->next_pid = xnthread_host_pid(next);
197 __entry->next_prio = xnthread_current_priority(next);
200 TP_printk(
"prev_name=%s prev_pid=%d prev_prio=%d prev_state=0x%lx ==> next_name=%s next_pid=%d next_prio=%d",
201 __get_str(prev_name), __entry->prev_pid,
202 __entry->prev_prio, __entry->prev_state,
203 __get_str(next_name), __entry->next_pid, __entry->next_prio)
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 name=%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),
240 __field(
unsigned long, mask)
241 __field(xnticks_t, timeout)
242 __field(xntmode_t, timeout_mode)
243 __field(
struct xnsynch *, wchan)
247 __entry->pid = xnthread_host_pid(thread);
248 __entry->mask = mask;
249 __entry->timeout = timeout;
250 __entry->timeout_mode = timeout_mode;
251 __entry->wchan = wchan;
254 TP_printk(
"pid=%d mask=0x%lx timeout=%Lu timeout_mode=%d wchan=%p",
255 __entry->pid, __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 __string(name, thread->name)
266 __field(
unsigned long, mask)
270 __assign_str(name, thread->name);
271 __entry->pid = xnthread_host_pid(thread);
272 __entry->mask = mask;
275 TP_printk(
"name=%s pid=%d mask=0x%lx",
276 __get_str(name), __entry->pid, __entry->mask)
279 TRACE_EVENT(cobalt_thread_fault,
280 TP_PROTO(
struct ipipe_trap_data *td),
285 __field(
unsigned int, type)
289 __entry->ip = (
void *)xnarch_fault_pc(td);
290 __entry->type = xnarch_fault_trap(td);
293 TP_printk(
"ip=%p type=%x",
294 __entry->ip, __entry->type)
297 TRACE_EVENT(cobalt_thread_set_current_prio,
298 TP_PROTO(
struct xnthread *thread),
302 __field(
struct xnthread *, thread)
308 __entry->thread = thread;
309 __entry->pid = xnthread_host_pid(thread);
310 __entry->cprio = xnthread_current_priority(thread);
313 TP_printk(
"thread=%p pid=%d prio=%d",
314 __entry->thread, __entry->pid, __entry->cprio)
317 DEFINE_EVENT(thread_event, cobalt_thread_start,
318 TP_PROTO(
struct xnthread *thread),
322 DEFINE_EVENT(thread_event, cobalt_thread_cancel,
323 TP_PROTO(
struct xnthread *thread),
327 DEFINE_EVENT(thread_event, cobalt_thread_join,
328 TP_PROTO(
struct xnthread *thread),
332 DEFINE_EVENT(thread_event, cobalt_thread_unblock,
333 TP_PROTO(
struct xnthread *thread),
337 DEFINE_EVENT(curr_thread_event, cobalt_thread_wait_period,
338 TP_PROTO(
struct xnthread *thread),
342 DEFINE_EVENT(curr_thread_event, cobalt_thread_missed_period,
343 TP_PROTO(
struct xnthread *thread),
347 DEFINE_EVENT(curr_thread_event, cobalt_thread_set_mode,
348 TP_PROTO(
struct xnthread *thread),
352 TRACE_EVENT(cobalt_thread_migrate,
353 TP_PROTO(
unsigned int cpu),
357 __field(
unsigned int, cpu)
364 TP_printk(
"cpu=%u", __entry->cpu)
367 TRACE_EVENT(cobalt_thread_migrate_passive,
368 TP_PROTO(
struct xnthread *thread,
unsigned int cpu),
369 TP_ARGS(thread, cpu),
372 __field(
struct xnthread *, thread)
374 __field(
unsigned int, cpu)
378 __entry->thread = thread;
379 __entry->pid = xnthread_host_pid(thread);
383 TP_printk(
"thread=%p pid=%d cpu=%u",
384 __entry->thread, __entry->pid, __entry->cpu)
387 DEFINE_EVENT(curr_thread_event, cobalt_shadow_gohard,
388 TP_PROTO(
struct xnthread *thread),
392 DEFINE_EVENT(curr_thread_event, cobalt_watchdog_signal,
393 TP_PROTO(
struct xnthread *thread),
397 DEFINE_EVENT(curr_thread_event, cobalt_shadow_hardened,
398 TP_PROTO(
struct xnthread *thread),
402 #define cobalt_print_relax_reason(reason) \ 403 __print_symbolic(reason, \ 404 { SIGDEBUG_UNDEFINED, "undefined" }, \ 405 { SIGDEBUG_MIGRATE_SIGNAL, "signal" }, \ 406 { SIGDEBUG_MIGRATE_SYSCALL, "syscall" }, \ 407 { SIGDEBUG_MIGRATE_FAULT, "fault" }) 409 TRACE_EVENT(cobalt_shadow_gorelax,
410 TP_PROTO(
int reason),
418 __entry->reason = reason;
421 TP_printk(
"reason=%s", cobalt_print_relax_reason(__entry->reason))
424 DEFINE_EVENT(curr_thread_event, cobalt_shadow_relaxed,
425 TP_PROTO(
struct xnthread *thread),
429 DEFINE_EVENT(curr_thread_event, cobalt_shadow_entry,
430 TP_PROTO(
struct xnthread *thread),
434 TRACE_EVENT(cobalt_shadow_map,
435 TP_PROTO(
struct xnthread *thread),
439 __field(
struct xnthread *, thread)
445 __entry->thread = thread;
446 __entry->pid = xnthread_host_pid(thread);
447 __entry->prio = xnthread_base_priority(thread);
450 TP_printk(
"thread=%p pid=%d prio=%d",
451 __entry->thread, __entry->pid, __entry->prio)
454 DEFINE_EVENT(curr_thread_event, cobalt_shadow_unmap,
455 TP_PROTO(
struct xnthread *thread),
459 TRACE_EVENT(cobalt_lostage_request,
460 TP_PROTO(
const char *type,
struct task_struct *task),
465 __array(
char, comm, TASK_COMM_LEN)
466 __field(
const char *, type)
470 __entry->type = type;
471 __entry->pid = task_pid_nr(task);
472 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
475 TP_printk(
"request=%s pid=%d comm=%s",
476 __entry->type, __entry->pid, __entry->comm)
479 TRACE_EVENT(cobalt_lostage_wakeup,
480 TP_PROTO(
struct task_struct *task),
485 __array(
char, comm, TASK_COMM_LEN)
489 __entry->pid = task_pid_nr(task);
490 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
493 TP_printk(
"pid=%d comm=%s",
494 __entry->pid, __entry->comm)
497 TRACE_EVENT(cobalt_lostage_signal,
498 TP_PROTO(
struct task_struct *task,
int sig),
503 __array(
char, comm, TASK_COMM_LEN)
508 __entry->pid = task_pid_nr(task);
510 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
513 TP_printk(
"pid=%d comm=%s sig=%d",
514 __entry->pid, __entry->comm, __entry->sig)
517 DEFINE_EVENT(irq_event, cobalt_irq_entry,
518 TP_PROTO(
unsigned int irq),
522 DEFINE_EVENT(irq_event, cobalt_irq_exit,
523 TP_PROTO(
unsigned int irq),
527 DEFINE_EVENT(irq_event, cobalt_irq_attach,
528 TP_PROTO(
unsigned int irq),
532 DEFINE_EVENT(irq_event, cobalt_irq_detach,
533 TP_PROTO(
unsigned int irq),
537 DEFINE_EVENT(irq_event, cobalt_irq_enable,
538 TP_PROTO(
unsigned int irq),
542 DEFINE_EVENT(irq_event, cobalt_irq_disable,
543 TP_PROTO(
unsigned int irq),
547 DEFINE_EVENT(clock_event, cobalt_clock_entry,
548 TP_PROTO(
unsigned int irq),
552 DEFINE_EVENT(clock_event, cobalt_clock_exit,
553 TP_PROTO(
unsigned int irq),
557 DEFINE_EVENT(timer_event, cobalt_timer_stop,
558 TP_PROTO(
struct xntimer *timer),
562 DEFINE_EVENT(timer_event, cobalt_timer_expire,
563 TP_PROTO(
struct xntimer *timer),
567 #define cobalt_print_timer_mode(mode) \ 568 __print_symbolic(mode, \ 569 { XN_RELATIVE, "rel" }, \ 570 { XN_ABSOLUTE, "abs" }, \ 571 { XN_REALTIME, "rt" }) 573 TRACE_EVENT(cobalt_timer_start,
574 TP_PROTO(
struct xntimer *timer, xnticks_t value, xnticks_t interval,
576 TP_ARGS(timer, value, interval, mode),
579 __field(
struct xntimer *, timer)
580 #ifdef CONFIG_XENO_OPT_STATS
581 __string(name, timer->name)
583 __field(xnticks_t, value)
584 __field(xnticks_t, interval)
585 __field(xntmode_t, mode)
589 __entry->timer = timer;
590 #ifdef CONFIG_XENO_OPT_STATS
591 __assign_str(name, timer->name);
593 __entry->value = value;
594 __entry->interval = interval;
595 __entry->mode = mode;
598 TP_printk(
"timer=%p(%s) value=%Lu interval=%Lu mode=%s",
600 #ifdef CONFIG_XENO_OPT_STATS
605 __entry->value, __entry->interval,
606 cobalt_print_timer_mode(__entry->mode))
611 TRACE_EVENT(cobalt_timer_migrate,
612 TP_PROTO(
struct xntimer *timer,
unsigned int cpu),
616 __field(
struct xntimer *, timer)
617 __field(
unsigned int, cpu)
621 __entry->timer = timer;
625 TP_printk(
"timer=%p cpu=%u",
626 __entry->timer, __entry->cpu)
631 DEFINE_EVENT(synch_wait_event, cobalt_synch_sleepon,
632 TP_PROTO(
struct xnsynch *synch),
636 DEFINE_EVENT(synch_wait_event, cobalt_synch_try_acquire,
637 TP_PROTO(
struct xnsynch *synch),
641 DEFINE_EVENT(synch_wait_event, cobalt_synch_acquire,
642 TP_PROTO(
struct xnsynch *synch),
646 DEFINE_EVENT(synch_post_event, cobalt_synch_release,
647 TP_PROTO(
struct xnsynch *synch),
651 DEFINE_EVENT(synch_post_event, cobalt_synch_wakeup,
652 TP_PROTO(
struct xnsynch *synch),
656 DEFINE_EVENT(synch_post_event, cobalt_synch_wakeup_many,
657 TP_PROTO(
struct xnsynch *synch),
661 DEFINE_EVENT(synch_post_event, cobalt_synch_flush,
662 TP_PROTO(
struct xnsynch *synch),
666 DEFINE_EVENT(synch_post_event, cobalt_synch_forget,
667 TP_PROTO(
struct xnsynch *synch),
674 #undef TRACE_INCLUDE_PATH 675 #undef TRACE_INCLUDE_FILE 676 #define TRACE_INCLUDE_FILE cobalt-core 677 #include <trace/define_trace.h> Scheduling information structure.
Definition: sched.h:58
unsigned long status
Definition: sched.h:60