use $(LIBENSCVECTOR) instead of libensc_vector.a
[util-vserver.git] / util-vserver / lib / vserver-internal.h
index 716e0a8..9a4fb93 100644 (file)
 #  define __NR_vserver ENSC_SYSCALL__NR_vserver
 #endif
 
+inline static ALWAYSINLINE void vc_noop0() {}
+
 #define VC_PREFIX      0)
-#define VC_SUFFIX      else (void)((void)0
-#define CALL_VC_NOOP   (void)0
+#define VC_SUFFIX      else (void)(vc_noop0()
+#define CALL_VC_NOOP   vc_noop0()
 #define CALL_VC_GENERAL(ID, SUFFIX, FUNC, ...)                         \
   VC_PREFIX; VC_SELECT(ID) return FUNC ## _ ## SUFFIX(__VA_ARGS__); VC_SUFFIX
 
 #  define NETTYPE_KERNEL2USER(X)       (X)
 #endif
 
+#define CDLIM_USER2KERNEL(X)           ((X)==VC_CDLIM_UNSET    ? CDLIM_UNSET    : \
+                                        (X)==VC_CDLIM_INFINITY ? CDLIM_INFINITY : \
+                                        (X)==VC_CDLIM_KEEP     ? CDLIM_KEEP     : \
+                                        (X))
+
+  /// the __typeof__ thing is a hack to deal with the kernel interface
+  /// using an unsigned long long value for a uint32_t type
+#define CDLIM_KERNEL2USER(X)           ((X)==(__typeof__(X))CDLIM_UNSET       ? VC_CDLIM_UNSET    : \
+                                        (X)==(__typeof__(X))CDLIM_INFINITY    ? VC_CDLIM_INFINITY : \
+                                        (X)==(__typeof__(X))CDLIM_KEEP        ? VC_CDLIM_KEEP     : \
+                                        (X))
+
 
-#define ENSC_STRUCT_IDX(STRUCT,ATTR) \
+#define ENSC_STRUCT_IDX(STRUCT,ATTR)                   \
   ((char*)(&(STRUCT).ATTR) - (char*)(&(STRUCT)))
-#define ENSC_SAME_STRUCT_IDX(LHS,RHS,ATTR) \
+#define ENSC_SAME_STRUCT_IDX(LHS,RHS,ATTR)                     \
   (ENSC_STRUCT_IDX(LHS,ATTR) == ENSC_STRUCT_IDX(RHS,ATTR))
+#define ENSC_SAME_STRUCT_ITEM(LHS,RHS,ATTR)    \
+  (ENSC_SAME_STRUCT_IDX(LHS,RHS,ATTR) &&       \
+   sizeof((LHS).ATTR)==sizeof((RHS).ATTR) &&   \
+   sizeof(LHS)==sizeof(RHS))
 
 #define EXT2_IOC_GETCONTEXT            _IOR('x', 1, long)
 #define EXT2_IOC_SETCONTEXT            _IOW('x', 2, long)