sync with OpenBSD -current
This commit is contained in:
parent
b321f55ead
commit
302c0be22f
43 changed files with 456 additions and 132 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_timeout.c,v 1.98 2024/08/05 23:51:11 dlg Exp $ */
|
||||
/* $OpenBSD: kern_timeout.c,v 1.99 2024/08/11 00:49:34 dlg Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2001 Thomas Nordin <nordin@openbsd.org>
|
||||
* Copyright (c) 2000-2001 Artur Grabowski <art@openbsd.org>
|
||||
|
@ -332,18 +332,25 @@ timeout_add(struct timeout *new, int to_ticks)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline int
|
||||
timeout_add_ticks(struct timeout *to, uint64_t to_ticks, int notzero)
|
||||
{
|
||||
if (to_ticks > INT_MAX)
|
||||
to_ticks = INT_MAX;
|
||||
else if (to_ticks == 0 && notzero)
|
||||
to_ticks = 1;
|
||||
|
||||
return timeout_add(to, (int)to_ticks);
|
||||
}
|
||||
|
||||
int
|
||||
timeout_add_tv(struct timeout *to, const struct timeval *tv)
|
||||
{
|
||||
uint64_t to_ticks;
|
||||
|
||||
to_ticks = (uint64_t)hz * tv->tv_sec + tv->tv_usec / tick;
|
||||
if (to_ticks > INT_MAX)
|
||||
to_ticks = INT_MAX;
|
||||
if (to_ticks == 0 && tv->tv_usec > 0)
|
||||
to_ticks = 1;
|
||||
|
||||
return timeout_add(to, (int)to_ticks);
|
||||
return timeout_add_ticks(to, to_ticks, tv->tv_usec > 0);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -352,37 +359,28 @@ timeout_add_sec(struct timeout *to, int secs)
|
|||
uint64_t to_ticks;
|
||||
|
||||
to_ticks = (uint64_t)hz * secs;
|
||||
if (to_ticks > INT_MAX)
|
||||
to_ticks = INT_MAX;
|
||||
if (to_ticks == 0)
|
||||
to_ticks = 1;
|
||||
|
||||
return timeout_add(to, (int)to_ticks);
|
||||
return timeout_add_ticks(to, to_ticks, 1);
|
||||
}
|
||||
|
||||
int
|
||||
timeout_add_msec(struct timeout *to, int msecs)
|
||||
timeout_add_msec(struct timeout *to, uint64_t msecs)
|
||||
{
|
||||
uint64_t to_ticks;
|
||||
|
||||
to_ticks = (uint64_t)msecs * 1000 / tick;
|
||||
if (to_ticks > INT_MAX)
|
||||
to_ticks = INT_MAX;
|
||||
if (to_ticks == 0 && msecs > 0)
|
||||
to_ticks = 1;
|
||||
to_ticks = msecs * 1000 / tick;
|
||||
|
||||
return timeout_add(to, (int)to_ticks);
|
||||
return timeout_add_ticks(to, to_ticks, msecs > 0);
|
||||
}
|
||||
|
||||
int
|
||||
timeout_add_usec(struct timeout *to, int usecs)
|
||||
timeout_add_usec(struct timeout *to, uint64_t usecs)
|
||||
{
|
||||
int to_ticks = usecs / tick;
|
||||
uint64_t to_ticks;
|
||||
|
||||
if (to_ticks == 0 && usecs > 0)
|
||||
to_ticks = 1;
|
||||
to_ticks = usecs / tick;
|
||||
|
||||
return timeout_add(to, to_ticks);
|
||||
return timeout_add_ticks(to, to_ticks, usecs > 0);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -391,12 +389,8 @@ timeout_add_nsec(struct timeout *to, uint64_t nsecs)
|
|||
uint64_t to_ticks;
|
||||
|
||||
to_ticks = nsecs / (tick * 1000);
|
||||
if (to_ticks > INT_MAX)
|
||||
to_ticks = INT_MAX;
|
||||
if (to_ticks == 0 && nsecs > 0)
|
||||
to_ticks = 1;
|
||||
|
||||
return timeout_add(to, (int)to_ticks);
|
||||
return timeout_add_ticks(to, to_ticks, nsecs > 0);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue