+/**
+ * Remove a task from the scheduler.
+ *
+ * \param t The task to remove.
+ *
+ * If the pre_select pointer of \a t is not \p NULL, it is removed from
+ * the pre_select list of the scheduler. Same goes for \a post_select.
+ */
+void unregister_task(struct task *t)
+{
+ if (!initialized)
+ return;
+ PARA_INFO_LOG("unregistering %s (%p)\n", t->status, t);
+ if (t->pre_select)
+ list_del(&t->pre_select_node);
+ if (t->post_select)
+ list_del(&t->post_select_node);
+ if (t->error >= 0)
+ t->error = -E_TASK_KILLED;
+};
+
+