event: fix divide by 0 in send_event()
[akaros.git] / tests / misc-compat.h
index e56c76f..08f472f 100644 (file)
@@ -1,9 +1,8 @@
-#ifndef MISC_COMPAT_H
-#define MISC_COMPAT_H
+#pragma once
 
 #ifdef __ros__
 
-#include <timing.h>
+#include <parlib/timing.h>
 
 #define pthread_id() (pthread_self()->id)
 
 #endif
 
 #include <sys/param.h> /* MIN/MAX */
+#include <unistd.h>
 
 /* not quite, since akaros udelay is a busy wait */
 #define udelay(usec) usleep(usec)
+#define ndelay(nsec)                                                           \
+{                                                                              \
+       struct timespec ts = {0, 0};                                           \
+       ts.tv_nsec = (nsec);                                                   \
+       nanosleep(&ts, 0);                                                     \
+}
 
 /* not quite a normal relax, which also pauses, but this works for all archs */
 static inline void cpu_relax(void)
@@ -33,5 +39,38 @@ static inline void cpu_relax(void)
 
 #define vcore_id() (-1)
 
+#define num_vcores() ((int)sysconf(_SC_NPROCESSORS_ONLN))
+
+#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
+
+typedef void* atomic_t;
+
+static void uth_disable_notifs(void)
+{
+}
+
+static void uth_enable_notifs(void)
+{
+}
+
+static int get_pcoreid(void)
+{
+       return -1;
+}
+
+#define printd(args...) {}
+
+#define COUNT_OF(x) (sizeof((x))/sizeof((x)[0]))
+
+#ifdef __x86_64__
+
+#define mb() ({ asm volatile("mfence" ::: "memory"); })
+#define cmb() ({ asm volatile("" ::: "memory"); })
+#define rmb() cmb()
+#define wmb() cmb()
+#define wrmb() mb()
+#define rwmb() cmb()
+
+#endif /* __x86_64__ */
+
 #endif /* __ros__ */
-#endif /* MISC_COMPAT_H */