diff --git a/Kernel.cpp b/Kernel.cpp index d0b2816..b3003c9 100644 --- a/Kernel.cpp +++ b/Kernel.cpp @@ -28,7 +28,6 @@ void Kernel_setup() { last_tick_start = millis(); last_tick_duration = 0; - //Serial.begin(115200); } void Kernel_start(int (*callback)(int, unsigned int), unsigned long interval) @@ -223,10 +222,13 @@ void Kernel_tick() // If the process has any non-masked signals pending, run it if ((tasks[i].signal & tasks[i].signal_mask) != 0) { - // Run the task - int task_return = (*tasks[i].callback)(tasks[i].pid, tasks[i].signal); - // Reset the signal + + unsigned int signals = tasks[i].signal; tasks[i].signal = SIGNAL_NONE; + + // Run the task + int task_return = (*tasks[i].callback)(tasks[i].pid, signals); + // If the tasks's return value was non-zero, it has exited. if (task_return != 0) @@ -263,7 +265,7 @@ void Kernel_tick() bool signals_pending = false; for (int i=0; i