X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fvs_base.h;h=0022fe45f39c39038be83479e7e5208b0565fb28;hb=5632b6ccf74cda3d26351dc12759c6e156613ee7;hp=b2dfad6a5f5cbb52f9daf8397a4c23d9e436866c;hpb=e6a27dba1cf83d871b2dfcd64f04f12a67e3f4d5;p=linux-2.6.git diff --git a/include/linux/vs_base.h b/include/linux/vs_base.h index b2dfad6a5..0022fe45f 100644 --- a/include/linux/vs_base.h +++ b/include/linux/vs_base.h @@ -3,12 +3,19 @@ #include "vserver/context.h" +#define VX_IRQ 0x4000 +#define VX_IRQ_MASK 0xF000 +#if 1 +#include +#endif #define vx_task_xid(t) ((t)->xid) #define vx_current_xid() vx_task_xid(current) -#define vx_check(c,m) __vx_check(vx_current_xid(),c,m) +#define current_vx_info() (current->vx_info) + +#define vx_check(c,m) __vx_check(vx_current_xid(),c,m|VX_IRQ) #define vx_weak_check(c,m) ((m) ? vx_check(c,m) : 1) @@ -33,6 +40,11 @@ static inline int __vx_check(xid_t cid, xid_t id, unsigned int mode) (id > 1) && (id < MIN_D_CONTEXT)) return 1; } +#if 1 + if ((mode & VX_IRQ) && (unlikely(in_interrupt()))) + return 1; +#endif + return (((mode & VX_ADMIN) && (cid == 0)) || ((mode & VX_WATCH) && (cid == 1)) || ((mode & VX_HOSTID) && (id == 0))); @@ -100,7 +112,6 @@ static inline int __vx_check(xid_t cid, xid_t id, unsigned int mode) #define vx_capable(b,c) (capable(b) || \ ((current->euid == 0) && vx_ccaps(c))) - #else #warning duplicate inclusion #endif