20 #ifndef _COBALT_KERNEL_STAT_H
21 #define _COBALT_KERNEL_STAT_H
23 #include <cobalt/kernel/clock.h>
30 #ifdef CONFIG_XENO_OPT_STATS
32 typedef struct xnstat_exectime {
40 #define xnstat_percpu_data raw_cpu_ptr(nktimer.stats)
44 #define xnstat_exectime_now() xnclock_core_read_raw()
47 #define xnstat_exectime_update(sched, date) \
49 xnticks_t __date = date; \
50 (sched)->current_account->total += \
51 __date - (sched)->last_account_switch; \
52 (sched)->last_account_switch = __date; \
59 #define xnstat_exectime_set_current(sched, new_account) \
61 xnstat_exectime_t *__prev; \
62 __prev = (xnstat_exectime_t *) \
63 atomic_long_xchg((atomic_long_t *)&(sched)->current_account, \
64 (long)(new_account)); \
69 #define xnstat_exectime_get_current(sched) ((sched)->current_account)
73 #define xnstat_exectime_finalize(sched, new_account) \
75 (sched)->last_account_switch = xnclock_core_read_raw(); \
76 (sched)->current_account = (new_account); \
80 #define xnstat_exectime_get_start(account) ((account)->start)
81 #define xnstat_exectime_get_total(account) ((account)->total)
84 #define xnstat_exectime_get_last_switch(sched) ((sched)->last_account_switch)
88 #define xnstat_exectime_reset_stats(stat) \
91 (stat)->start = xnclock_core_read_raw(); \
95 typedef struct xnstat_counter {
96 unsigned long counter;
99 static inline unsigned long xnstat_counter_inc(xnstat_counter_t *c)
104 static inline unsigned long xnstat_counter_get(xnstat_counter_t *c)
109 static inline void xnstat_counter_set(xnstat_counter_t *c,
unsigned long value)
115 typedef struct xnstat_exectime {
118 #define xnstat_percpu_data NULL
119 #define xnstat_exectime_now() ({ 0; })
120 #define xnstat_exectime_update(sched, date) do { } while (0)
121 #define xnstat_exectime_set_current(sched, new_account) ({ (void)sched; NULL; })
122 #define xnstat_exectime_get_current(sched) ({ (void)sched; NULL; })
123 #define xnstat_exectime_finalize(sched, new_account) do { } while (0)
124 #define xnstat_exectime_get_start(account) ({ 0; })
125 #define xnstat_exectime_get_total(account) ({ 0; })
126 #define xnstat_exectime_get_last_switch(sched) ({ 0; })
127 #define xnstat_exectime_reset_stats(account) do { } while (0)
129 typedef struct xnstat_counter {
132 #define xnstat_counter_inc(c) ({ do { } while(0); 0; })
133 #define xnstat_counter_get(c) ({ 0; })
134 #define xnstat_counter_set(c, value) do { } while (0)
139 #define xnstat_exectime_switch(sched, new_account) \
141 xnstat_exectime_update(sched, xnstat_exectime_now()); \
142 xnstat_exectime_set_current(sched, new_account); \
147 #define xnstat_exectime_lazy_switch(sched, new_account, date) \
149 xnstat_exectime_update(sched, date); \
150 xnstat_exectime_set_current(sched, new_account); \