In the Linux Kernel I am putting a task asleep with
set_current_state(TASK_INTERRUPTIBLE);
schedule_hrtimeout(&next_release_time, HRTIMER_MODE_ABS);
That works so far. The documentation says:
/* %TASK_INTERRUPTIBLE - the routine may return early if a signal is
* delivered to the current task or the current task is explicitly woken
* up.
So I was assuming calling
wake_up_process(task);
Would let the routine return. At this point I am not calling from the current task. Precisley I am looping over a list, that holds all tasks, that require a wake up.
list_for_each(pos, &my_obj_list){
obj = list_entry(pos, struct my_obj, my_obj_list);
wake_up_process(obj->task);
}
However, this just lets the kernel crash when it gets there. So I guess this is not the way how the function should be used.
Do you have any ideas or hints regarding this problem?