#endif
#ifndef max_t
-#define max_t(type, a, b) ((type) max(a, b))
+#define max_t(type, a, b) max((type) a, (type) b)
#endif
#ifndef min
#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
+#ifndef min_t
+#define min_t(type, a, b) min((type) a, (type) b)
+#endif
+
#ifndef LTTNG_PACKED
#define LTTNG_PACKED __attribute__((__packed__))
#endif
+/*
+ * Align value to the next multiple of align. Returns val if it already is a
+ * multiple of align. Align must be a power of two.
+ */
+#define ALIGN_TO(value, align) ((value + (align - 1)) & ~(align - 1))
+
/*
* LTTNG_HIDDEN: set the hidden attribute for internal functions
* On Windows, symbols are local unless explicitly exported,
#define member_sizeof(type, field) sizeof(((type *) 0)->field)
+#define ASSERT_LOCKED(lock) assert(pthread_mutex_trylock(&lock))
+
/*
* lttng_strncpy returns 0 on success, or nonzero on failure.
* It checks that the @src string fits into @dst_len before performing