--- /dev/null
+#include "libcompat.h"
+
+int timer_create(int clockid CK_ATTRIBUTE_UNUSED,
+ struct sigevent *sevp CK_ATTRIBUTE_UNUSED,
+ timer_t *timerid CK_ATTRIBUTE_UNUSED)
+{
+ /*
+ * The create function does nothing. timer_settime will use
+ * alarm to set the timer, and timer_delete will stop the
+ * alarm
+ */
+
+ return 0;
+}
--- /dev/null
+#include "libcompat.h"
+
+int timer_delete(timer_t timerid CK_ATTRIBUTE_UNUSED)
+{
+ /*
+ * There is only one timer, that used by alarm.
+ * Setting alarm(0) will not set a new alarm, and
+ * will kill the previous timer.
+ */
+
+ alarm(0);
+
+ return 0;
+}
--- /dev/null
+#include "libcompat.h"
+
+int timer_settime(timer_t timerid CK_ATTRIBUTE_UNUSED,
+ int flags CK_ATTRIBUTE_UNUSED,
+ const struct itimerspec *new_value,
+ struct itimerspec * old_value CK_ATTRIBUTE_UNUSED)
+{
+ int seconds = new_value->it_value.tv_sec;
+
+ /*
+ * As the alarm() call has only second precision, if the caller
+ * specifies partial seconds, we round up to the nearest second.
+ */
+ if(new_value->it_value.tv_nsec > 0)
+ {
+ seconds += 1;
+ }
+
+ alarm(seconds);
+
+ return 0;
+}