unsigned long long now_usec(void);
unsigned long long now_msec(void);
int sleep_until_msec(unsigned long long msec);
-unsigned long long get_backoff_delta_msec(unsigned long long t0, unsigned long long tend,
+unsigned long long get_backoff_delta_msec(unsigned long long tend,
unsigned long long *delta);
/* endianness and alignments */
unsigned long long delta = 0;
/* Check exponential increments */
- get_backoff_delta_msec(now_msec(), now_msec() + 10, &delta);
+ get_backoff_delta_msec(now_msec() + 10, &delta);
assert_return(delta == 1, EXIT_FAILURE);
- get_backoff_delta_msec(now_msec(), now_msec() + 10, &delta);
+ get_backoff_delta_msec(now_msec() + 10, &delta);
assert_return(delta == 2, EXIT_FAILURE);
- get_backoff_delta_msec(now_msec(), now_msec() + 10, &delta);
+ get_backoff_delta_msec(now_msec() + 10, &delta);
assert_return(delta == 4, EXIT_FAILURE);
- get_backoff_delta_msec(now_msec(), now_msec() + 10, &delta);
+ get_backoff_delta_msec(now_msec() + 10, &delta);
assert_return(delta == 8, EXIT_FAILURE);
{
- unsigned long long t0, tend;
-
/* Check tail */
delta = 4;
- tend = now_msec() + 3;
- t0 = tend - 10;
- get_backoff_delta_msec(t0, tend, &delta);
+ get_backoff_delta_msec(now_msec() + 3, &delta);
assert_return(delta == 2, EXIT_FAILURE);
- tend = now_msec() + 1;
- t0 = tend - 9;
- get_backoff_delta_msec(t0, tend, &delta);
+ get_backoff_delta_msec(now_msec() + 1, &delta);
assert_return(delta == 1, EXIT_FAILURE);
- tend = now_msec();
- t0 = tend - 10;
- get_backoff_delta_msec(t0, tend, &delta);
+ get_backoff_delta_msec(now_msec(), &delta);
assert_return(delta == 0, EXIT_FAILURE);
}
static int rmmod_do_remove_module(struct kmod_module *mod)
{
const char *modname = kmod_module_get_name(mod);
- unsigned long long interval_msec, t0_msec = 0, tend_msec;
+ unsigned long long interval_msec, tend_msec = 0;
int flags = 0, err;
SHOW("rmmod %s\n", modname);
} else if (err == -EAGAIN && wait_msec) {
unsigned long long until_msec;
- if (!t0_msec) {
- t0_msec = now_msec();
- tend_msec = t0_msec + wait_msec;
+ if (!tend_msec) {
+ tend_msec = now_msec() + wait_msec;
interval_msec = 1;
}
- until_msec = get_backoff_delta_msec(t0_msec, tend_msec,
- &interval_msec);
+ until_msec = get_backoff_delta_msec(tend_msec, &interval_msec);
err = sleep_until_msec(until_msec);
- if (!t0_msec)
+ /* Error out if now_msec() fails */
+ if (tend_msec == wait_msec)
err = -ENOTSUP;
if (err < 0) {