}
-#define __vx_flags(v,m,f) (((v) & (m)) ^ (f))
+#define __vx_state(v) ((v) ? ((v)->vx_state) : 0)
-#define __vx_task_flags(t,m,f) \
- (((t) && ((t)->vx_info)) ? \
- __vx_flags((t)->vx_info->vx_flags,(m),(f)) : 0)
+#define vx_info_state(v,m) (__vx_state(v) & (m))
-#define vx_current_flags() \
- ((current->vx_info) ? current->vx_info->vx_flags : 0)
-#define vx_flags(m,f) __vx_flags(vx_current_flags(),(m),(f))
+/* generic flag merging */
+
+#define vx_check_flags(v,m,f) (((v) & (m)) ^ (f))
+
+#define vx_mask_flags(v,f,m) (((v) & ~(m)) | ((f) & (m)))
+
+#define vx_mask_mask(v,f,m) (((v) & ~(m)) | ((v) & (f) & (m)))
+
+
+/* context flags */
+
+#define __vx_flags(v) ((v) ? (v)->vx_flags : 0)
+
+#define vx_current_flags() __vx_flags(current->vx_info)
+
+#define vx_info_flags(v,m,f) \
+ vx_check_flags(__vx_flags(v),(m),(f))
+#define task_vx_flags(t,m,f) \
+ ((t) && vx_info_flags((t)->vx_info, (m), (f)))
-#define vx_current_ccaps() \
- ((current->vx_info) ? current->vx_info->vx_ccaps : 0)
+#define vx_flags(m,f) vx_info_flags(current->vx_info,(m),(f))
+
+
+/* context caps */
+
+#define __vx_ccaps(v) ((v) ? (v)->vx_ccaps : 0)
+
+#define vx_current_ccaps() __vx_ccaps(current->vx_info)
+
+#define vx_info_ccaps(v,c) (__vx_ccaps(v) & (c))
+
+#define vx_ccaps(c) vx_info_ccaps(current->vx_info,(c))
-#define vx_ccaps(c) (vx_current_ccaps() & (c))
#define vx_current_bcaps() \
(((current->vx_info) && !vx_flags(VXF_STATE_SETUP, 0)) ? \
current->vx_info->vx_bcaps : cap_bset)
-/* generic flag merging */
-
-#define vx_mask_flags(v,f,m) (((v) & ~(m)) | ((f) & (m)))
+#define vx_current_initpid(n) \
+ (current->vx_info && \
+ (current->vx_info->vx_initpid == (n)))
-#define vx_mask_mask(v,f,m) (((v) & ~(m)) | ((v) & (f) & (m)))
#endif