Nucleus
Barry Exiting interrupt context on clone() child 571b85e (3 years, 3 months ago)
diff --git a/include/nucleus/task.h b/include/nucleus/task.h
index cfc0c99..11ad4ae 100644
--- a/include/nucleus/task.h
+++ b/include/nucleus/task.h
@@ -35,7 +35,9 @@ struct Task {
gid_t gid, egid, sgid;
enum Priority priority;
enum State state;
+ uint32_t inCriticalSection;
+ uintptr_t esi, edi, ebx;
uintptr_t esp, ebp, eip;
page_dir_t pageDir;
@@ -56,6 +58,19 @@ super_user(void)
return (current->euid == 0);
}
+/* Enter a critical section */
+static inline void
+enter_critical_section(void)
+{
+ __atomic_add_fetch(¤t->inCriticalSection, 1, __ATOMIC_RELAXED);
+}
+/* Exit a critical section */
+static inline void
+exit_critical_section(void)
+{
+ __atomic_sub_fetch(¤t->inCriticalSection, 1, __ATOMIC_RELAXED);
+}
+
void init_tasking(void);
void schedule(void);
pid_t clone(int flags);