Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / include / linux / vs_context.h
index 8cdeb8d..51656ac 100644 (file)
@@ -170,7 +170,48 @@ static inline void __wakeup_vx_info(struct vx_info *vxi)
                wake_up_interruptible(&vxi->vx_wait);
 }
 
+
+#define enter_vx_info(v,s)     __enter_vx_info(v,s,__FILE__,__LINE__)
+
+static inline void __enter_vx_info(struct vx_info *vxi,
+       struct vx_info_save *vxis, const char *_file, int _line)
+{
+       vxlprintk(VXD_CBIT(xid, 5), "enter_vx_info(%p[#%d],%p) %p[#%d,%p]",
+               vxi, vxi ? vxi->vx_id : 0, vxis, current,
+               current->xid, current->vx_info, _file, _line);
+       vxis->vxi = xchg(&current->vx_info, vxi);
+       vxis->xid = current->xid;
+       current->xid = vxi ? vxi->vx_id : 0;
+}
+
+#define leave_vx_info(s)       __leave_vx_info(s,__FILE__,__LINE__)
+
+static inline void __leave_vx_info(struct vx_info_save *vxis,
+       const char *_file, int _line)
+{
+       vxlprintk(VXD_CBIT(xid, 5), "leave_vx_info(%p[#%d,%p]) %p[#%d,%p]",
+               vxis, vxis->xid, vxis->vxi, current,
+               current->xid, current->vx_info, _file, _line);
+       (void)xchg(&current->vx_info, vxis->vxi);
+       current->xid = vxis->xid;
+}
+
+
+static inline void __enter_vx_admin(struct vx_info_save *vxis)
+{
+       vxis->vxi = xchg(&current->vx_info, NULL);
+       vxis->xid = xchg(&current->xid, (xid_t)0);
+}
+
+static inline void __leave_vx_admin(struct vx_info_save *vxis)
+{
+       (void)xchg(&current->xid, vxis->xid);
+       (void)xchg(&current->vx_info, vxis->vxi);
+}
+
 extern void exit_vx_info(struct task_struct *, int);
+extern void exit_vx_info_early(struct task_struct *, int);
+
 
 static inline
 struct task_struct *vx_child_reaper(struct task_struct *p)
@@ -189,6 +230,9 @@ struct task_struct *vx_child_reaper(struct task_struct *p)
 
        reaper = vxi->vx_reaper;
 out:
+       vxdprintk(VXD_CBIT(xid, 3),
+               "vx_child_reaper(%p[#%u,%u]) = %p[#%u,%u]\n",
+               p, p->xid, p->pid, reaper, reaper->xid, reaper->pid);
        return reaper;
 }