X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fvs_base.h;h=a1d34b6ffc08a9111531e75689f4e64a5b6a1f55;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=ed23add3a930cf1bd475e1428375cfbc6c20e419;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/include/linux/vs_base.h b/include/linux/vs_base.h index ed23add3a..a1d34b6ff 100644 --- a/include/linux/vs_base.h +++ b/include/linux/vs_base.h @@ -1,6 +1,7 @@ #ifndef _VX_VS_BASE_H #define _VX_VS_BASE_H + #include "vserver/context.h" @@ -17,7 +18,7 @@ * check current context for ADMIN/WATCH and * optionally agains supplied argument */ -static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode) +static inline int __vx_check(xid_t cid, xid_t id, unsigned int mode) { if (mode & VX_ARG_MASK) { if ((mode & VX_IDENT) && @@ -34,7 +35,8 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode) return 1; } return (((mode & VX_ADMIN) && (cid == 0)) || - ((mode & VX_WATCH) && (cid == 1))); + ((mode & VX_WATCH) && (cid == 1)) || + ((mode & VX_HOSTID) && (id == 0))); } @@ -51,6 +53,8 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode) #define vx_mask_mask(v,f,m) (((v) & ~(m)) | ((v) & (f) & (m))) +#define vx_check_bit(v,n) ((v) & (1LL << (n))) + /* context flags */ @@ -78,6 +82,13 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode) #define vx_ccaps(c) vx_info_ccaps(current->vx_info,(c)) +#define __vx_mcaps(v) ((v) ? (v)->vx_ccaps >> 32UL : ~0 ) + +#define vx_info_mcaps(v,c) (__vx_mcaps(v) & (c)) + +#define vx_mcaps(c) vx_info_mcaps(current->vx_info,(c)) + + #define vx_current_bcaps() \ (((current->vx_info) && !vx_flags(VXF_STATE_SETUP, 0)) ? \ current->vx_info->vx_bcaps : cap_bset) @@ -88,4 +99,6 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode) (current->vx_info->vx_initpid == (n))) +#else +#warning duplicate inclusion #endif