Add parlib/common.h
[akaros.git] / user / benchutil / include / alarm.h
index d250c82..04d391a 100644 (file)
@@ -2,9 +2,10 @@
  * Barret Rhoden <brho@cs.berkeley.edu>
  * See LICENSE for details.
  *
- * Userspace alarm service, based off a slimmed down version of the kernel
- * alarms.  Under the hood, it uses the kernel alarm service for the root of
- * the alarm chain.
+ * Userspace alarms.  There are lower level helpers to build your own alarms
+ * from the #A device and an alarm service, based off a slimmed down version of
+ * the kernel alarms.  Under the hood, the user alarm uses the #A service for
+ * the root of the alarm chain.
  *
  * This is (was) hanging out in benchutil so as to not create a dependency from
  * parlib on benchutil (usec2tsc and friends).
  * Don't forget to manage your memory at some (safe) point:
  *     free(waiter); */
 
-#ifndef _ALARM_H
-#define _ALARM_H
+#ifndef BENCHUTIL_ALARM_H
+#define BENCHUTIL_ALARM_H
 
-#include <ros/common.h>
+#include <parlib/common.h>
 #include <sys/queue.h>
-#include <spinlock.h>
-#include <event.h>
+#include <parlib/spinlock.h>
+#include <parlib/event.h>
+
+__BEGIN_DECLS
+
+/* Low-level alarm interface */
+
+int devalarm_get_fds(int *ctlfd_r, int *timerfd_r, int *alarmid_r);
+int devalarm_set_evq(int ctlfd, struct event_queue *ev_q);
+int devalarm_set_time(int timerfd, uint64_t tsc_time);
+int devalarm_disable(int ctlfd);
+
+/* Alarm service */
 
 /* Specifc waiter, per alarm */
 struct alarm_waiter {
@@ -65,6 +77,7 @@ void init_awaiter(struct alarm_waiter *waiter,
                   void (*func) (struct alarm_waiter *));
 /* Sets the time an awaiter goes off */
 void set_awaiter_abs(struct alarm_waiter *waiter, uint64_t abs_time);
+void set_awaiter_abs_unix(struct alarm_waiter *waiter, uint64_t abs_time);
 void set_awaiter_rel(struct alarm_waiter *waiter, uint64_t usleep);
 void set_awaiter_inc(struct alarm_waiter *waiter, uint64_t usleep);
 /* Arms/disarms the alarm */
@@ -80,4 +93,6 @@ void alarm_abort_sysc(struct alarm_waiter *awaiter);
 #define ALARM_POISON_TIME 12345
 void print_chain(struct timer_chain *tchain);
 
-#endif /* _ALARM_H */
+__END_DECLS
+
+#endif /* BENCHUTIL_ALARM_H */