void bmk_sched_init(void);
void bmk_sched(void);
+void bmk_sched_yield(void);
struct bmk_thread *bmk_sched_create(const char *, void *, int,
void (*)(void *), void *,
_sys_sched_yield(void)
{
- bmk_sched();
+ bmk_sched_yield();
return 0;
}
__weak_alias(sched_yield,_sys_sched_yield);
}
return thread->bt_tls[which];
}
+
+void
+bmk_sched_yield(void)
+{
+ struct bmk_thread *current = bmk_sched_current();
+
+ TAILQ_REMOVE(&threads, current, bt_entries);
+ TAILQ_INSERT_TAIL(&threads, current, bt_entries);
+ bmk_sched();
+}
}
return thread->bt_tls[which];
}
+
+void
+bmk_sched_yield(void)
+{
+ struct bmk_thread *current = bmk_sched_current();
+
+ TAILQ_REMOVE(&threads, current, bt_entries);
+ TAILQ_INSERT_TAIL(&threads, current, bt_entries);
+ bmk_sched();
+}