static void
timeq_init(void)
{
- timeq = heap_new(int_comparator);
+ timeq = heap_new(ulong_comparator);
reg_exit_func(timeq_cleanup);
}
-time_t
+unsigned long
timeq_next(void)
{
- void *time;
+ void *timep;
if (!timeq)
return ~0;
- heap_peek(timeq, &time, 0);
- return (time_t)time;
+ heap_peek(timeq, &timep, 0);
+ return (unsigned long)timep;
}
void
-timeq_add(time_t when, timeq_func func, void *data)
+timeq_add(unsigned long when, timeq_func func, void *data)
{
struct timeq_entry *ent;
void *w;
}
struct timeq_extra {
- time_t when;
+ unsigned long when;
timeq_func func;
void *data;
int mask;
{
struct timeq_entry *a = data;
struct timeq_extra *b = extra;
- if (((b->mask & TIMEQ_IGNORE_WHEN) || ((time_t)key == b->when))
- && ((b->mask & TIMEQ_IGNORE_FUNC) || (a->func == b->func))
- && ((b->mask & TIMEQ_IGNORE_DATA) || (a->data == b->data))) {
+ if (((b->mask & TIMEQ_IGNORE_WHEN) || ((unsigned long)key == b->when))
+ && ((b->mask & TIMEQ_IGNORE_FUNC) || (a->func == b->func))
+ && ((b->mask & TIMEQ_IGNORE_DATA) || (a->data == b->data))) {
free(data);
return 1;
} else {
}
void
-timeq_del(time_t when, timeq_func func, void *data, int mask)
+timeq_del(unsigned long when, timeq_func func, void *data, int mask)
{
struct timeq_extra extra;
extra.when = when;
void *k, *d;
struct timeq_entry *ent;
while (heap_size(timeq) > 0) {
- heap_peek(timeq, &k, &d);
- if ((time_t)k > now)
+ heap_peek(timeq, &k, &d);
+ if ((unsigned long)k > now)
break;
- ent = d;
- heap_pop(timeq);
- ent->func(ent->data);
+ ent = d;
+ heap_pop(timeq);
+ ent->func(ent->data);
free(ent);
}
}