aboutsummaryrefslogtreecommitdiffstats
path: root/src/kernel_iface.c
diff options
context:
space:
mode:
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);