-__DEFINE_LXSYSCALL1(unsigned int, sleep, unsigned int, seconds)
-{
- if (!seconds) {
- return 0;
- }
-
- time_t systime = clock_systime() / 1000;
- struct haybed* bed = ¤t_thread->sleep;
-
- if (bed->wakeup_time) {
- return (bed->wakeup_time - systime);
- }
-
- bed->wakeup_time = systime + seconds;
-
- if (llist_empty(&bed->sleepers)) {
- llist_append(&sched_ctx.sleepers, &bed->sleepers);
- }
-
- store_retval(seconds);
-
- block_current_thread();
- schedule();
-
- return 0;
-}
-