Пример #1
0
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;
}
Пример #2
0
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++;
}