16 #include <linux/sched.h>
17 #include <linux/slab.h>
19 #include <linux/time.h>
20 #include <linux/sysctl.h>
22 #include <linux/module.h>
28 static int __init delayacct_setup_disable(
char *
str)
33 __setup(
"nodelayacct", delayacct_setup_disable);
43 tsk->delays = kmem_cache_zalloc(delayacct_cache,
GFP_KERNEL);
71 ts = timespec_sub(*end, *start);
72 ns = timespec_to_ns(&
ts);
79 spin_unlock_irqrestore(&
current->delays->lock, flags);
84 delayacct_start(&
current->delays->blkio_start);
91 delayacct_end(&
current->delays->blkio_start,
94 &
current->delays->swapin_count);
96 delayacct_end(&
current->delays->blkio_start,
106 unsigned long long t2,
t3;
118 tmp += timespec_to_ns(&ts);
123 tmp += timespec_to_ns(&ts);
131 t1 = tsk->sched_info.pcount;
132 t2 = tsk->sched_info.run_delay;
133 t3 = tsk->
se.sum_exec_runtime;
156 spin_unlock_irqrestore(&tsk->delays->lock, flags);
169 tsk->delays->swapin_delay);
170 spin_unlock_irqrestore(&tsk->delays->lock, flags);
176 delayacct_start(&
current->delays->freepages_start);
181 delayacct_end(&
current->delays->freepages_start,
182 &
current->delays->freepages_end,
183 &
current->delays->freepages_delay,
184 &
current->delays->freepages_count);