X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/78cd005fac540973751b5a108c37a715bc64b5a2..59ecf21e36b2332f6adf2a568ef555283d8c119a:/lunaix-os/kernel/device/poll.c?ds=sidebyside diff --git a/lunaix-os/kernel/device/poll.c b/lunaix-os/kernel/device/poll.c index e7f0f87..bf7edd7 100644 --- a/lunaix-os/kernel/device/poll.c +++ b/lunaix-os/kernel/device/poll.c @@ -149,7 +149,7 @@ __append_pollers(int* ds, int npoller) return nc; } -static int +static void __wait_until_event() { block_current(); @@ -159,7 +159,7 @@ __wait_until_event() void iopoll_init(struct iopoll* ctx) { - ctx->pollers = valloc(sizeof(ptr_t) * MAX_POLLER_COUNT); + ctx->pollers = vzalloc(sizeof(ptr_t) * MAX_POLLER_COUNT); ctx->n_poller = 0; } @@ -173,9 +173,9 @@ iopoll_free(pid_t pid, struct iopoll* ctx) llist_delete(&poller->evt_listener); vfree(poller); } - - vfree(ctx->pollers); } + + vfree(ctx->pollers); } void @@ -257,7 +257,7 @@ __DEFINE_LXSYSCALL2(int, pollctl, int, action, va_list, va) time_t t1 = clock_systime() + timeout; while (!(retcode == __do_poll_round(pinfos, npinfos))) { - if (timeout >= 0 && t1 >= clock_systime()) { + if (timeout >= 0 && t1 < clock_systime()) { break; } __wait_until_event(); @@ -269,7 +269,7 @@ __DEFINE_LXSYSCALL2(int, pollctl, int, action, va_list, va) time_t t1 = clock_systime() + timeout; while (!(retcode == __do_poll_all(pinfo))) { - if (timeout >= 0 && t1 >= clock_systime()) { + if (timeout >= 0 && t1 < clock_systime()) { break; } __wait_until_event();