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.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/kernel_iface.c b/src/kernel_iface.c
index 69e306b..34767ae 100644
--- a/src/kernel_iface.c
+++ b/src/kernel_iface.c
@@ -68,6 +68,15 @@ void exit_np(void)
68 if (likely(ctrl_page != NULL) && --ctrl_page->sched.np.flag) { 68 if (likely(ctrl_page != NULL) && --ctrl_page->sched.np.flag) {
69 /* became preemptive, let's check for delayed preemptions */ 69 /* became preemptive, let's check for delayed preemptions */
70 __sync_synchronize(); 70 __sync_synchronize();
71 if (ctrl_page->sched.np.preempt)
72 sched_yield();
73 }
74}
75
76void exit_np_trace(void)
77{
78 if (likely(ctrl_page != NULL) && --ctrl_page->sched.np.flag) {
79 __sync_synchronize();
71 if (ctrl_page->sched.np.preempt) { 80 if (ctrl_page->sched.np.preempt) {
72 ctrl_page->ts_syscall_start = (uint64_t) get_cycles(); 81 ctrl_page->ts_syscall_start = (uint64_t) get_cycles();
73 sched_yield(); 82 sched_yield();
@@ -75,6 +84,7 @@ void exit_np(void)
75 } 84 }
76} 85}
77 86
87
78/* init and return a ptr to the control page for 88/* init and return a ptr to the control page for
79 * preemption and migration overhead analysis 89 * preemption and migration overhead analysis
80 * 90 *