aboutsummaryrefslogtreecommitdiffstats
path: root/src/kernel_iface.c
diff options
context:
space:
mode:
authorJeremy Erickson <jerickso@cs.unc.edu>2013-01-28 22:28:29 -0500
committerJeremy Erickson <jerickso@cs.unc.edu>2013-01-28 22:28:29 -0500
commit6bb644a69dde49ffc8c3fb484a6a3bf81d21181c (patch)
tree133cbc52dd657efc7ead4c91f89ed5249998416f /src/kernel_iface.c
parentf8ffc9dd7082a677c7d8027985981d8e319b0817 (diff)
Add support for measurement code from bbbdisswip-splitting-jerickso
Diffstat (limited to 'src/kernel_iface.c')
-rw-r--r--src/kernel_iface.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/kernel_iface.c b/src/kernel_iface.c
index 33d56df..4ded334 100644
--- a/src/kernel_iface.c
+++ b/src/kernel_iface.c
@@ -75,6 +75,21 @@ void exit_np(void)
75 } 75 }
76} 76}
77 77
78int exit_np_trace(void)
79{
80 if (likely(ctrl_page != NULL) &&
81 ctrl_page->sched.np.flag &&
82 !(--ctrl_page->sched.np.flag)) {
83 __sync_synchronize();
84 if (ctrl_page->sched.np.preempt) {
85 ctrl_page->ts_syscall_start = (uint64_t) get_cycles();
86 sched_yield();
87 return 1;
88 }
89 }
90 return 0;
91}
92
78int requested_to_preempt(void) 93int requested_to_preempt(void)
79{ 94{
80 return (likely(ctrl_page != NULL) && ctrl_page->sched.np.preempt); 95 return (likely(ctrl_page != NULL) && ctrl_page->sched.np.preempt);