#include <_sysutil.h>
#include <sys/domain.h>
+/* log stuff */
+
+
+
#define FMTARG(fmt, arg, format, ...) fmt format "%s", arg, ## __VA_ARGS__
#define XSEGLOG(...) (xseg_snprintf(__xseg_errbuf, 4096, FMTARG("%s: ", __func__, ## __VA_ARGS__, "")), \
__xseg_errbuf[4095] = 0, __xseg_log(__xseg_errbuf))
+#define XSEGLOG2(__ctx, __level, ...) \
+ do { \
+ if (__level <= ((__ctx)->log_level)) { \
+ __xseg_log2(__ctx, __level, FMTARG("%s: ", __func__, ## __VA_ARGS__ ,"")); \
+ } \
+ } while(0)
+
+/* general purpose xflags */
+#define X_ALLOC ((uint32_t) (1 << 0))
+#define X_LOCAL ((uint32_t) (1 << 1))
+#define X_NONBLOCK ((uint32_t) (1 << 2))
+
+
typedef uint64_t xpointer;
+/* type to be used as absolute pointer
+ * this should be the same as xqindex
+ * and must fit into a pointer type
+ */
+typedef uint64_t xptr;
+
#define Noneidx ((xqindex)-1)
#define Null ((xpointer)-1)
((xptraddr)->x = (xpointer)(unsigned long)(ptrval) - \
(xpointer)(unsigned long)(xptraddr) )
+
+
+#define XPTR_OFFSET(base, ptr) ((unsigned long)(ptr) - (unsigned long)(base))
+
+#define XPTR_MAKE(ptrval, base) ((xptr) XPTR_OFFSET(base, ptrval))
+
+#define XPTR_TAKE(xptrval, base) \
+ ( (void *) ( (unsigned long) base + (unsigned long) xptrval))
+
#endif