Browse Source

fix cpu consume at idle

master
Evgeny 20 hours ago
parent
commit
189a93c71d
  1. 5
      lib/u_async.c

5
lib/u_async.c

@ -867,13 +867,10 @@ void uasync_poll(struct UASYNC* ua, int timeout_tb) {
req_timeout.tv_usec = (timeout_tb % 10000) * 100; req_timeout.tv_usec = (timeout_tb % 10000) * 100;
} }
// Use minimum of requested and next timer if both finite
struct timeval poll_timeout; struct timeval poll_timeout;
if (timeout_tb < 0) { if (timeout_tb < 0) {
// Infinite requested - use next timer if any
poll_timeout = next_timeout; poll_timeout = next_timeout;
} else { } else {
// Finite requested - min of requested and next
if (next_timeout.tv_sec < req_timeout.tv_sec || if (next_timeout.tv_sec < req_timeout.tv_sec ||
(next_timeout.tv_sec == req_timeout.tv_sec && next_timeout.tv_usec < req_timeout.tv_usec)) { (next_timeout.tv_sec == req_timeout.tv_sec && next_timeout.tv_usec < req_timeout.tv_usec)) {
poll_timeout = next_timeout; poll_timeout = next_timeout;
@ -881,6 +878,8 @@ void uasync_poll(struct UASYNC* ua, int timeout_tb) {
poll_timeout = req_timeout; poll_timeout = req_timeout;
} }
} }
if (poll_timeout.tv_sec == 0 && poll_timeout.tv_usec == 0 && timeout_tb > 0) poll_timeout = req_timeout;
int timeout_ms; int timeout_ms;
if (timeout_tb < 0 && (next_timeout.tv_sec > 0 || next_timeout.tv_usec > 0)) { if (timeout_tb < 0 && (next_timeout.tv_sec > 0 || next_timeout.tv_usec > 0)) {

Loading…
Cancel
Save