aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sys/timer.h14
-rw-r--r--module/splat/splat-taskq.c10
2 files changed, 19 insertions, 5 deletions
diff --git a/include/sys/timer.h b/include/sys/timer.h
index 2542510dd..33d577e71 100644
--- a/include/sys/timer.h
+++ b/include/sys/timer.h
@@ -35,6 +35,20 @@
#define ddi_get_lbolt() ((clock_t)jiffies)
#define ddi_get_lbolt64() ((int64_t)get_jiffies_64())
+#define ddi_time_before(a, b) (typecheck(clock_t, a) && \
+ typecheck(clock_t, b) && \
+ ((a) - (b) < 0))
+#define ddi_time_after(a, b) ddi_time_before(b, a)
+#define ddi_time_before_eq(a, b) (!ddi_time_after(a, b))
+#define ddi_time_after_eq(a, b) ddi_time_before_eq(b, a)
+
+#define ddi_time_before64(a, b) (typecheck(int64_t, a) && \
+ typecheck(int64_t, b) && \
+ ((a) - (b) < 0))
+#define ddi_time_after64(a, b) ddi_time_before64(b, a)
+#define ddi_time_before_eq64(a, b) (!ddi_time_after64(a, b))
+#define ddi_time_after_eq64(a, b) ddi_time_before_eq64(b, a)
+
#define delay(ticks) schedule_timeout_uninterruptible(ticks)
#define SEC_TO_TICK(sec) ((sec) * HZ)
diff --git a/module/splat/splat-taskq.c b/module/splat/splat-taskq.c
index e4793d457..074af895b 100644
--- a/module/splat/splat-taskq.c
+++ b/module/splat/splat-taskq.c
@@ -82,7 +82,7 @@ typedef struct splat_taskq_arg {
atomic_t *count;
int order[SPLAT_TASKQ_ORDER_MAX];
unsigned int depth;
- unsigned long expire;
+ clock_t expire;
taskq_t *tq;
taskq_ent_t *tqe;
spinlock_t lock;
@@ -1140,7 +1140,7 @@ splat_taskq_test9_func(void *arg)
splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg;
ASSERT(tq_arg);
- if (ddi_get_lbolt() >= tq_arg->expire)
+ if (ddi_time_after_eq(ddi_get_lbolt(), tq_arg->expire))
atomic_inc(tq_arg->count);
kmem_free(tq_arg, sizeof(splat_taskq_arg_t));
@@ -1228,7 +1228,7 @@ splat_taskq_test10_func(void *arg)
splat_taskq_arg_t *tq_arg = (splat_taskq_arg_t *)arg;
uint8_t rnd;
- if (ddi_get_lbolt() >= tq_arg->expire)
+ if (ddi_time_after_eq(ddi_get_lbolt(), tq_arg->expire))
atomic_inc(tq_arg->count);
/* Randomly sleep to further perturb the system */
@@ -1249,7 +1249,7 @@ splat_taskq_test10(struct file *file, void *arg)
int canceled = 0;
int completed = 0;
int blocked = 0;
- unsigned long start, cancel;
+ clock_t start, cancel;
tqas = vmalloc(sizeof(*tqas) * nr_tasks);
if (tqas == NULL)
@@ -1327,7 +1327,7 @@ splat_taskq_test10(struct file *file, void *arg)
start = ddi_get_lbolt();
i = 0;
- while (ddi_get_lbolt() < start + 5 * HZ) {
+ while (ddi_time_before(ddi_get_lbolt(), start + 5 * HZ)) {
taskqid_t id;
uint32_t rnd;