diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-07-25 12:42:27 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-07-25 12:42:27 -0400 |
commit | a55f6ec8f509ddecaeb153d16065ab256bb8086a (patch) | |
tree | f3165f5bf3d7409a1d10f8b34c6a4e2686c1dcdb /include | |
parent | 038e435397bb5c2913a9a5796982d6843fc8d4ea (diff) |
locking: trace system call entry/exit cost
Diffstat (limited to 'include')
-rw-r--r-- | include/litmus/litmus.h | 10 | ||||
-rw-r--r-- | include/litmus/rt_param.h | 3 | ||||
-rw-r--r-- | include/litmus/trace.h | 13 |
3 files changed, 26 insertions, 0 deletions
diff --git a/include/litmus/litmus.h b/include/litmus/litmus.h index b5d8abb4aea5..5883a67c5750 100644 --- a/include/litmus/litmus.h +++ b/include/litmus/litmus.h | |||
@@ -127,6 +127,16 @@ void srp_ceiling_block(void); | |||
127 | 127 | ||
128 | #define bheap2task(hn) ((struct task_struct*) hn->value) | 128 | #define bheap2task(hn) ((struct task_struct*) hn->value) |
129 | 129 | ||
130 | static inline struct control_page* get_control_page(struct task_struct *t) | ||
131 | { | ||
132 | return tsk_rt(t)->ctrl_page; | ||
133 | } | ||
134 | |||
135 | static inline int has_control_page(struct task_struct* t) | ||
136 | { | ||
137 | return tsk_rt(t)->ctrl_page != NULL; | ||
138 | } | ||
139 | |||
130 | #ifdef CONFIG_NP_SECTION | 140 | #ifdef CONFIG_NP_SECTION |
131 | 141 | ||
132 | static inline int is_kernel_np(struct task_struct *t) | 142 | static inline int is_kernel_np(struct task_struct *t) |
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h index 3fb3c76225f2..57496662afde 100644 --- a/include/litmus/rt_param.h +++ b/include/litmus/rt_param.h | |||
@@ -66,6 +66,9 @@ struct control_page { | |||
66 | * its non-preemptive section? */ | 66 | * its non-preemptive section? */ |
67 | int delayed_preemption; | 67 | int delayed_preemption; |
68 | 68 | ||
69 | /* locking overhead tracing: time stamp prior to system call */ | ||
70 | uint64_t ts_syscall_start; /* Feather-Trace cycles */ | ||
71 | |||
69 | /* to be extended */ | 72 | /* to be extended */ |
70 | }; | 73 | }; |
71 | 74 | ||
diff --git a/include/litmus/trace.h b/include/litmus/trace.h index 3f0743ec9063..5aba68f18893 100644 --- a/include/litmus/trace.h +++ b/include/litmus/trace.h | |||
@@ -29,6 +29,7 @@ feather_callback void save_timestamp_def(unsigned long event, unsigned long type | |||
29 | feather_callback void save_timestamp_task(unsigned long event, unsigned long t_ptr); | 29 | feather_callback void save_timestamp_task(unsigned long event, unsigned long t_ptr); |
30 | feather_callback void save_timestamp_cpu(unsigned long event, unsigned long cpu); | 30 | feather_callback void save_timestamp_cpu(unsigned long event, unsigned long cpu); |
31 | feather_callback void save_task_latency(unsigned long event, unsigned long when_ptr); | 31 | feather_callback void save_task_latency(unsigned long event, unsigned long when_ptr); |
32 | feather_callback void save_timestamp_time(unsigned long event, unsigned long time_ptr); | ||
32 | 33 | ||
33 | #define TIMESTAMP(id) ft_event0(id, save_timestamp) | 34 | #define TIMESTAMP(id) ft_event0(id, save_timestamp) |
34 | 35 | ||
@@ -43,6 +44,9 @@ feather_callback void save_task_latency(unsigned long event, unsigned long when_ | |||
43 | #define LTIMESTAMP(id, task) \ | 44 | #define LTIMESTAMP(id, task) \ |
44 | ft_event1(id, save_task_latency, (unsigned long) task) | 45 | ft_event1(id, save_task_latency, (unsigned long) task) |
45 | 46 | ||
47 | #define TIMESTAMP_TIME(id, time_ptr) \ | ||
48 | ft_event1(id, save_timestamp_time, (unsigned long) time_ptr) | ||
49 | |||
46 | #else /* !CONFIG_SCHED_OVERHEAD_TRACE */ | 50 | #else /* !CONFIG_SCHED_OVERHEAD_TRACE */ |
47 | 51 | ||
48 | #define TIMESTAMP(id) /* no tracing */ | 52 | #define TIMESTAMP(id) /* no tracing */ |
@@ -55,6 +59,8 @@ feather_callback void save_task_latency(unsigned long event, unsigned long when_ | |||
55 | 59 | ||
56 | #define LTIMESTAMP(id, when_ptr) /* no tracing */ | 60 | #define LTIMESTAMP(id, when_ptr) /* no tracing */ |
57 | 61 | ||
62 | #define TIMESTAMP_TIME(id, time_ptr) /* no tracing */ | ||
63 | |||
58 | #endif | 64 | #endif |
59 | 65 | ||
60 | 66 | ||
@@ -106,6 +112,13 @@ feather_callback void save_task_latency(unsigned long event, unsigned long when_ | |||
106 | #define TS_UNLOCK_START TIMESTAMP(180) | 112 | #define TS_UNLOCK_START TIMESTAMP(180) |
107 | #define TS_UNLOCK_END TIMESTAMP(181) | 113 | #define TS_UNLOCK_END TIMESTAMP(181) |
108 | 114 | ||
115 | #define TS_SYSCALL_IN_START(p) TIMESTAMP_TIME(190, p) | ||
116 | #define TS_SYSCALL_IN_END TIMESTAMP(191) | ||
117 | |||
118 | #define TS_SYSCALL_OUT_START TIMESTAMP(200) | ||
119 | #define TS_SYSCALL_OUT_END TIMESTAMP(201) | ||
120 | |||
121 | |||
109 | #define TS_SEND_RESCHED_START(c) CTIMESTAMP(190, c) | 122 | #define TS_SEND_RESCHED_START(c) CTIMESTAMP(190, c) |
110 | #define TS_SEND_RESCHED_END DTIMESTAMP(191, TSK_UNKNOWN) | 123 | #define TS_SEND_RESCHED_END DTIMESTAMP(191, TSK_UNKNOWN) |
111 | 124 | ||