X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fvserver-internal.h;h=9a4fb9375a1ade03438fe2e4971b6625db947fcb;hb=3eb1b2279739d0f16391a3724a9897c686f030d3;hp=02c5349bb3ca844cd9edadaad79ad2e2db3f0621;hpb=b7bbdaee15dabc02e4fad1c64bbc3a64aaa3b5d5;p=util-vserver.git diff --git a/util-vserver/lib/vserver-internal.h b/util-vserver/lib/vserver-internal.h index 02c5349..9a4fb93 100644 --- a/util-vserver/lib/vserver-internal.h +++ b/util-vserver/lib/vserver-internal.h @@ -35,9 +35,11 @@ # 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 @@ -90,6 +92,19 @@ # define CALL_VC_V13A(F,...) CALL_VC_NOOP #endif +#ifdef VC_ENABLE_API_V13 +# define CALL_VC_V13B(F,...) CALL_VC_GENERAL(0x00010021, v13b, F, __VA_ARGS__) +#else +# define CALL_VC_V13B(F,...) CALL_VC_NOOP +#endif + +#ifdef VC_ENABLE_API_V13 +# define CALL_VC_V13OBS(F,...) CALL_VC_GENERAL(0x00010011, v13obs, F, __VA_ARGS__) +#else +# define CALL_VC_V13OBS(F,...) CALL_VC_NOOP +#endif + + #ifdef VC_ENABLE_API_NET # define CALL_VC_NET(F,...) CALL_VC_GENERAL(0x00010016, net, F, __VA_ARGS__) #else @@ -191,6 +206,27 @@ # 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) \ + ((char*)(&(STRUCT).ATTR) - (char*)(&(STRUCT))) +#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)