#define __LUNAIX_TYPES_H
#include <lunaix/compiler.h>
+#include <lunaix/limits.h>
#include <stdarg.h>
#include <usr/lunaix/types.h>
typedef unsigned long ptr_t;
typedef unsigned long reg_t;
+typedef unsigned int uid_t;
+typedef unsigned int gid_t;
+
#ifndef CONFIG_ARCH_BITS_64
typedef unsigned long long u64_t;
#else
#define container_of(ptr, type, member) \
({ \
const typeof(((type*)0)->member)* __mptr = (ptr); \
- (ptr) ? (type*)((char*)__mptr - offsetof(type, member)) : 0; \
+ ((ptr_t)ptr != 0UL) ? (type*)((char*)__mptr - offsetof(type, member)) : 0; \
})
+#define offset(data, off) \
+ ((typeof(data))(__ptr(data) + (off)))
+
+#define offset_t(data, type, off) \
+ ((type*)(__ptr(data) + (off)))
+
#define __ptr(val) ((ptr_t)(val))
typedef va_list* sc_va_list;