struct vdev_cache_entry {
char *ve_data;
uint64_t ve_offset;
- uint64_t ve_lastused;
+ clock_t ve_lastused;
avl_node_t ve_offset_node;
avl_node_t ve_lastused_node;
uint32_t ve_hits;
#define ddi_get_lbolt64() (gethrtime() >> 23)
#define hz 119 /* frequency when using gethrtime() >> 23 for lbolt */
+#define ddi_time_before(a, b) (a < b)
+#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) (a < b)
+#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)
+
extern void delay(clock_t ticks);
#define SEC_TO_TICK(sec) ((sec) * hz)
#endif /* !_KERNEL */
/* No recent memory pressure allow the ARC to grow. */
- if (arc_no_grow && ddi_get_lbolt() >= arc_grow_time)
+ if (arc_no_grow &&
+ ddi_time_after_eq(ddi_get_lbolt(), arc_grow_time))
arc_no_grow = FALSE;
arc_adjust_meta();
* but it is still in the cache. Move it to the MFU
* state.
*/
- if (now > buf->b_arc_access + ARC_MINTIME) {
+ if (ddi_time_after(now, buf->b_arc_access + ARC_MINTIME)) {
/*
* More than 125ms have passed since we
* instantiated this buffer. Move it to the
tx_state_t *tx = &dp->dp_tx;
callb_cpr_t cpr;
vdev_stat_t *vs1, *vs2;
- uint64_t start, delta;
+ clock_t start, delta;
#ifdef _KERNEL
/*
start = delta = 0;
for (;;) {
- uint64_t timer, timeout;
+ clock_t timer, timeout;
uint64_t txg;
uint64_t ndirty;
const vdev_cache_entry_t *ve1 = a1;
const vdev_cache_entry_t *ve2 = a2;
- if (ve1->ve_lastused < ve2->ve_lastused)
+ if (ddi_time_before(ve1->ve_lastused, ve2->ve_lastused))
return (-1);
- if (ve1->ve_lastused > ve2->ve_lastused)
+ if (ddi_time_after(ve1->ve_lastused, ve2->ve_lastused))
return (1);
/*
if (handler->zi_record.zi_duration > 0) {
VERIFY(handler->zi_record.zi_timer == 0 ||
- handler->zi_record.zi_timer +
- handler->zi_record.zi_duration * hz >
- ddi_get_lbolt64());
+ ddi_time_after64(
+ (int64_t)handler->zi_record.zi_timer +
+ handler->zi_record.zi_duration * hz,
+ ddi_get_lbolt64()));
} else {
/* duration is negative so the subtraction here adds */
VERIFY(handler->zi_record.zi_timer == 0 ||