|
|
@ -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<MAX_TASKS; i++) |
|
|
|
{ |
|
|
|
if (tasks[i].signal != SIGNAL_NONE) |
|
|
|
if ((tasks[i].signal & tasks[i].signal_mask) != 0) |
|
|
|
{ |
|
|
|
signals_pending = true; |
|
|
|
} |
|
|
|