KMError EventLoop::Impl::post(Task task, EventLoopToken *token) { auto ret = appendTask(std::move(task), token); if (ret != KMError::NOERR) { return ret; } poll_->notify(); return KMError::NOERR; }
void registerFunctionWithOffset(struct Sched *sched, void (*f)(), uint32_t period, uint16_t priority, uint32_t offset){ struct SchedTask *task; struct SchedTask *prev_task = sched->first_fn; task = createSchedFunction(f, period, priority, offset); if (sched->first_fn != NULL) { if (prev_task->priority > priority) { insertTask(sched, task, sched->first_fn); } else { while (prev_task->priority <= priority && prev_task != sched->last_fn) prev_task = prev_task->next_fn; appendTask(sched, task, prev_task); } } else { /* First task added */ sched->first_fn = task; sched->last_fn = sched->first_fn; } sched->nb_fn++; }