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 #ifdef CONFIG_XENO_OPT_SCHED_QUOTA 208 TRACE_EVENT(cobalt_schedquota_refill,
223 DECLARE_EVENT_CLASS(schedquota_group_event,
224 TP_PROTO(
struct xnsched_quota_group *tg),
232 __entry->tgid = tg->tgid;
239 DEFINE_EVENT(schedquota_group_event, cobalt_schedquota_create_group,
240 TP_PROTO(
struct xnsched_quota_group *tg),
244 DEFINE_EVENT(schedquota_group_event, cobalt_schedquota_destroy_group,
245 TP_PROTO(
struct xnsched_quota_group *tg),
249 TRACE_EVENT(cobalt_schedquota_set_limit,
250 TP_PROTO(
struct xnsched_quota_group *tg,
253 TP_ARGS(tg, percent, peak_percent),
257 __field(
int, percent)
258 __field(
int, peak_percent)
262 __entry->tgid = tg->tgid;
263 __entry->percent = percent;
264 __entry->peak_percent = peak_percent;
267 TP_printk(
"tgid=%d percent=%d peak_percent=%d",
268 __entry->tgid, __entry->percent, __entry->peak_percent)
271 DECLARE_EVENT_CLASS(schedquota_thread_event,
272 TP_PROTO(
struct xnsched_quota_group *tg,
273 struct xnthread *thread),
278 __field(
struct xnthread *, thread)
283 __entry->tgid = tg->tgid;
284 __entry->thread = thread;
285 __entry->pid = xnthread_host_pid(thread);
288 TP_printk(
"tgid=%d thread=%p pid=%d",
289 __entry->tgid, __entry->thread, __entry->pid)
292 DEFINE_EVENT(schedquota_thread_event, cobalt_schedquota_add_thread,
293 TP_PROTO(
struct xnsched_quota_group *tg,
294 struct xnthread *thread),
298 DEFINE_EVENT(schedquota_thread_event, cobalt_schedquota_remove_thread,
299 TP_PROTO(
struct xnsched_quota_group *tg,
300 struct xnthread *thread),
306 TRACE_EVENT(cobalt_thread_init,
307 TP_PROTO(
struct xnthread *thread,
308 const struct xnthread_init_attr *attr,
309 struct xnsched_class *sched_class),
310 TP_ARGS(thread, attr, sched_class),
313 __field(
struct xnthread *, thread)
314 __string(thread_name, thread->name)
315 __string(class_name, sched_class->name)
316 __field(
unsigned long, flags)
321 __entry->thread = thread;
322 __assign_str(thread_name, thread->name);
323 __entry->flags = attr->flags;
324 __assign_str(class_name, sched_class->name);
325 __entry->cprio = thread->cprio;
328 TP_printk(
"thread=%p name=%s flags=0x%lx class=%s prio=%d",
329 __entry->thread, __get_str(thread_name), __entry->flags,
330 __get_str(class_name), __entry->cprio)
333 TRACE_EVENT(cobalt_thread_suspend,
334 TP_PROTO(
struct xnthread *thread,
unsigned long mask, xnticks_t timeout,
335 xntmode_t timeout_mode,
struct xnsynch *wchan),
336 TP_ARGS(thread, mask, timeout, timeout_mode, wchan),
340 __field(
unsigned long, mask)
341 __field(xnticks_t, timeout)
342 __field(xntmode_t, timeout_mode)
343 __field(
struct xnsynch *, wchan)
347 __entry->pid = xnthread_host_pid(thread);
348 __entry->mask = mask;
349 __entry->timeout = timeout;
350 __entry->timeout_mode = timeout_mode;
351 __entry->wchan = wchan;
354 TP_printk(
"pid=%d mask=0x%lx timeout=%Lu timeout_mode=%d wchan=%p",
355 __entry->pid, __entry->mask,
356 __entry->timeout, __entry->timeout_mode, __entry->wchan)
359 TRACE_EVENT(cobalt_thread_resume,
360 TP_PROTO(
struct xnthread *thread,
unsigned long mask),
361 TP_ARGS(thread, mask),
364 __string(name, thread->name)
366 __field(
unsigned long, mask)
370 __assign_str(name, thread->name);
371 __entry->pid = xnthread_host_pid(thread);
372 __entry->mask = mask;
375 TP_printk(
"name=%s pid=%d mask=0x%lx",
376 __get_str(name), __entry->pid, __entry->mask)
379 TRACE_EVENT(cobalt_thread_fault,
380 TP_PROTO(
struct ipipe_trap_data *td),
385 __field(
unsigned int, type)
389 __entry->ip = (
void *)xnarch_fault_pc(td);
390 __entry->type = xnarch_fault_trap(td);
393 TP_printk(
"ip=%p type=%x",
394 __entry->ip, __entry->type)
397 TRACE_EVENT(cobalt_thread_set_current_prio,
398 TP_PROTO(
struct xnthread *thread),
402 __field(
struct xnthread *, thread)
408 __entry->thread = thread;
409 __entry->pid = xnthread_host_pid(thread);
410 __entry->cprio = xnthread_current_priority(thread);
413 TP_printk(
"thread=%p pid=%d prio=%d",
414 __entry->thread, __entry->pid, __entry->cprio)
417 DEFINE_EVENT(thread_event, cobalt_thread_start,
418 TP_PROTO(
struct xnthread *thread),
422 DEFINE_EVENT(thread_event, cobalt_thread_cancel,
423 TP_PROTO(
struct xnthread *thread),
427 DEFINE_EVENT(thread_event, cobalt_thread_join,
428 TP_PROTO(
struct xnthread *thread),
432 DEFINE_EVENT(thread_event, cobalt_thread_unblock,
433 TP_PROTO(
struct xnthread *thread),
437 DEFINE_EVENT(curr_thread_event, cobalt_thread_wait_period,
438 TP_PROTO(
struct xnthread *thread),
442 DEFINE_EVENT(curr_thread_event, cobalt_thread_missed_period,
443 TP_PROTO(
struct xnthread *thread),
447 DEFINE_EVENT(curr_thread_event, cobalt_thread_set_mode,
448 TP_PROTO(
struct xnthread *thread),
452 TRACE_EVENT(cobalt_thread_migrate,
453 TP_PROTO(
unsigned int cpu),
457 __field(
unsigned int, cpu)
464 TP_printk(
"cpu=%u", __entry->cpu)
467 TRACE_EVENT(cobalt_thread_migrate_passive,
468 TP_PROTO(
struct xnthread *thread,
unsigned int cpu),
469 TP_ARGS(thread, cpu),
472 __field(
struct xnthread *, thread)
474 __field(
unsigned int, cpu)
478 __entry->thread = thread;
479 __entry->pid = xnthread_host_pid(thread);
483 TP_printk(
"thread=%p pid=%d cpu=%u",
484 __entry->thread, __entry->pid, __entry->cpu)
487 DEFINE_EVENT(curr_thread_event, cobalt_shadow_gohard,
488 TP_PROTO(
struct xnthread *thread),
492 DEFINE_EVENT(curr_thread_event, cobalt_watchdog_signal,
493 TP_PROTO(
struct xnthread *thread),
497 DEFINE_EVENT(curr_thread_event, cobalt_shadow_hardened,
498 TP_PROTO(
struct xnthread *thread),
502 #define cobalt_print_relax_reason(reason) \ 503 __print_symbolic(reason, \ 504 { SIGDEBUG_UNDEFINED, "undefined" }, \ 505 { SIGDEBUG_MIGRATE_SIGNAL, "signal" }, \ 506 { SIGDEBUG_MIGRATE_SYSCALL, "syscall" }, \ 507 { SIGDEBUG_MIGRATE_FAULT, "fault" }) 509 TRACE_EVENT(cobalt_shadow_gorelax,
510 TP_PROTO(
int reason),
518 __entry->reason = reason;
521 TP_printk(
"reason=%s", cobalt_print_relax_reason(__entry->reason))
524 DEFINE_EVENT(curr_thread_event, cobalt_shadow_relaxed,
525 TP_PROTO(
struct xnthread *thread),
529 DEFINE_EVENT(curr_thread_event, cobalt_shadow_entry,
530 TP_PROTO(
struct xnthread *thread),
534 TRACE_EVENT(cobalt_shadow_map,
535 TP_PROTO(
struct xnthread *thread),
539 __field(
struct xnthread *, thread)
545 __entry->thread = thread;
546 __entry->pid = xnthread_host_pid(thread);
547 __entry->prio = xnthread_base_priority(thread);
550 TP_printk(
"thread=%p pid=%d prio=%d",
551 __entry->thread, __entry->pid, __entry->prio)
554 DEFINE_EVENT(curr_thread_event, cobalt_shadow_unmap,
555 TP_PROTO(
struct xnthread *thread),
559 TRACE_EVENT(cobalt_lostage_request,
560 TP_PROTO(
const char *type,
struct task_struct *task),
565 __array(
char, comm, TASK_COMM_LEN)
566 __field(
const char *, type)
570 __entry->type = type;
571 __entry->pid = task_pid_nr(task);
572 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
575 TP_printk(
"request=%s pid=%d comm=%s",
576 __entry->type, __entry->pid, __entry->comm)
579 TRACE_EVENT(cobalt_lostage_wakeup,
580 TP_PROTO(
struct task_struct *task),
585 __array(
char, comm, TASK_COMM_LEN)
589 __entry->pid = task_pid_nr(task);
590 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
593 TP_printk(
"pid=%d comm=%s",
594 __entry->pid, __entry->comm)
597 TRACE_EVENT(cobalt_lostage_signal,
598 TP_PROTO(
struct task_struct *task,
int sig),
603 __array(
char, comm, TASK_COMM_LEN)
608 __entry->pid = task_pid_nr(task);
610 memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
613 TP_printk(
"pid=%d comm=%s sig=%d",
614 __entry->pid, __entry->comm, __entry->sig)
617 DEFINE_EVENT(irq_event, cobalt_irq_entry,
618 TP_PROTO(
unsigned int irq),
622 DEFINE_EVENT(irq_event, cobalt_irq_exit,
623 TP_PROTO(
unsigned int irq),
627 DEFINE_EVENT(irq_event, cobalt_irq_attach,
628 TP_PROTO(
unsigned int irq),
632 DEFINE_EVENT(irq_event, cobalt_irq_detach,
633 TP_PROTO(
unsigned int irq),
637 DEFINE_EVENT(irq_event, cobalt_irq_enable,
638 TP_PROTO(
unsigned int irq),
642 DEFINE_EVENT(irq_event, cobalt_irq_disable,
643 TP_PROTO(
unsigned int irq),
647 DEFINE_EVENT(clock_event, cobalt_clock_entry,
648 TP_PROTO(
unsigned int irq),
652 DEFINE_EVENT(clock_event, cobalt_clock_exit,
653 TP_PROTO(
unsigned int irq),
657 DEFINE_EVENT(timer_event, cobalt_timer_stop,
658 TP_PROTO(
struct xntimer *timer),
662 DEFINE_EVENT(timer_event, cobalt_timer_expire,
663 TP_PROTO(
struct xntimer *timer),
667 #define cobalt_print_timer_mode(mode) \ 668 __print_symbolic(mode, \ 669 { XN_RELATIVE, "rel" }, \ 670 { XN_ABSOLUTE, "abs" }, \ 671 { XN_REALTIME, "rt" }) 673 TRACE_EVENT(cobalt_timer_start,
674 TP_PROTO(
struct xntimer *timer, xnticks_t value, xnticks_t interval,
676 TP_ARGS(timer, value, interval, mode),
679 __field(
struct xntimer *, timer)
680 #ifdef CONFIG_XENO_OPT_STATS
681 __string(name, timer->name)
683 __field(xnticks_t, value)
684 __field(xnticks_t, interval)
685 __field(xntmode_t, mode)
689 __entry->timer = timer;
690 #ifdef CONFIG_XENO_OPT_STATS
691 __assign_str(name, timer->name);
693 __entry->value = value;
694 __entry->interval = interval;
695 __entry->mode = mode;
698 TP_printk(
"timer=%p(%s) value=%Lu interval=%Lu mode=%s",
700 #ifdef CONFIG_XENO_OPT_STATS
705 __entry->value, __entry->interval,
706 cobalt_print_timer_mode(__entry->mode))
711 TRACE_EVENT(cobalt_timer_migrate,
712 TP_PROTO(
struct xntimer *timer,
unsigned int cpu),
716 __field(
struct xntimer *, timer)
717 __field(
unsigned int, cpu)
721 __entry->timer = timer;
725 TP_printk(
"timer=%p cpu=%u",
726 __entry->timer, __entry->cpu)
731 DEFINE_EVENT(synch_wait_event, cobalt_synch_sleepon,
732 TP_PROTO(
struct xnsynch *synch),
736 DEFINE_EVENT(synch_wait_event, cobalt_synch_try_acquire,
737 TP_PROTO(
struct xnsynch *synch),
741 DEFINE_EVENT(synch_wait_event, cobalt_synch_acquire,
742 TP_PROTO(
struct xnsynch *synch),
746 DEFINE_EVENT(synch_post_event, cobalt_synch_release,
747 TP_PROTO(
struct xnsynch *synch),
751 DEFINE_EVENT(synch_post_event, cobalt_synch_wakeup,
752 TP_PROTO(
struct xnsynch *synch),
756 DEFINE_EVENT(synch_post_event, cobalt_synch_wakeup_many,
757 TP_PROTO(
struct xnsynch *synch),
761 DEFINE_EVENT(synch_post_event, cobalt_synch_flush,
762 TP_PROTO(
struct xnsynch *synch),
766 DEFINE_EVENT(synch_post_event, cobalt_synch_forget,
767 TP_PROTO(
struct xnsynch *synch),
774 #undef TRACE_INCLUDE_PATH 775 #undef TRACE_INCLUDE_FILE 776 #define TRACE_INCLUDE_FILE cobalt-core 777 #include <trace/define_trace.h> Scheduling information structure.
Definition: sched.h:58
unsigned long status
Definition: sched.h:60