From 1cb90226816c7af7808be4c0de866c54da17ecc9 Mon Sep 17 00:00:00 2001 From: Jonathan Herman Date: Tue, 15 May 2012 13:39:52 -0400 Subject: Summarize schedulability with final record --- include/litmus/rt_param.h | 5 +++++ include/litmus/sched_trace.h | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'include') diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h index 003eaf32aa7f..ef9f1fb77c5b 100644 --- a/include/litmus/rt_param.h +++ b/include/litmus/rt_param.h @@ -228,6 +228,11 @@ struct rt_param { /* Pointer to the page shared between userspace and kernel. */ struct control_page * ctrl_page; + + lt_t total_tardy; + lt_t max_tardy; + unsigned int missed; + #ifdef CONFIG_PLUGIN_COLOR lt_t max_exec_time; lt_t tot_exec_time; diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h index d14eeaf0099f..c94b096cf855 100644 --- a/include/litmus/sched_trace.h +++ b/include/litmus/sched_trace.h @@ -86,6 +86,12 @@ struct st_task_exit_data { u64 max_exec_time; }; +struct st_task_tardy_data { + u64 total_tardy; + u32 max_tardy; + u32 missed; +}; + #define DATA(x) struct st_ ## x ## _data x; typedef enum { @@ -102,6 +108,7 @@ typedef enum { ST_ACTION, ST_SYS_RELEASE, ST_TASK_EXIT, + ST_TASK_TARDY, } st_event_record_type_t; struct st_event_record { @@ -121,6 +128,7 @@ struct st_event_record { DATA(action); DATA(sys_release); DATA(task_exit); + DATA(task_tardy); } data; }; @@ -164,6 +172,8 @@ feather_callback void do_sched_trace_sys_release(unsigned long id, lt_t* start); feather_callback void do_sched_trace_task_exit(unsigned long id, struct task_struct* task); +feather_callback void do_sched_trace_task_tardy(unsigned long id, + struct task_struct* task); #endif @@ -190,6 +200,7 @@ feather_callback void do_sched_trace_task_exit(unsigned long id, #define trace_litmus_task_resume(t, i) #define trace_litmus_sys_release(start) #define trace_litmus_task_exit(t) +#define trace_litmus_task_tardy(t) #define trace_litmus_resource_acquire(t, i); #define trace_litmus_resource_release(t, i); @@ -281,6 +292,14 @@ feather_callback void do_sched_trace_task_exit(unsigned long id, trace_litmus_task_exit(t); \ } while (0) + +#define sched_trace_task_tardy(t) \ + do { \ + SCHED_TRACE(SCHED_TRACE_BASE_ID + 12, \ + do_sched_trace_task_tardy, t); \ + trace_litmus_task_tardy(t); \ + } while (0) + #define QT_START lt_t _qt_start = litmus_clock() #define QT_END \ sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \ -- cgit v1.2.2