+#define claim_vx_info(v,p) __claim_vx_info(v,p,__FILE__,__LINE__)
+
+static inline void __claim_vx_info(struct vx_info *vxi,
+ struct task_struct *task, const char *_file, int _line)
+{
+ vxlprintk(VXD_CBIT(xid, 3), "claim_vx_info(%p[#%d.%d.%d]) %p",
+ vxi, vxi?vxi->vx_id:0,
+ vxi?atomic_read(&vxi->vx_usecnt):0,
+ vxi?atomic_read(&vxi->vx_tasks):0,
+ task, _file, _line);
+ vxh_claim_vx_info(vxi, task);
+
+ atomic_inc(&vxi->vx_tasks);
+}
+
+
+extern void unhash_vx_info(struct vx_info *);
+
+#define release_vx_info(v,p) __release_vx_info(v,p,__FILE__,__LINE__)
+
+static inline void __release_vx_info(struct vx_info *vxi,
+ struct task_struct *task, const char *_file, int _line)
+{
+ vxlprintk(VXD_CBIT(xid, 3), "release_vx_info(%p[#%d.%d.%d]) %p",
+ vxi, vxi?vxi->vx_id:0,
+ vxi?atomic_read(&vxi->vx_usecnt):0,
+ vxi?atomic_read(&vxi->vx_tasks):0,
+ task, _file, _line);
+ vxh_release_vx_info(vxi, task);
+
+ might_sleep();
+
+ if (atomic_dec_and_test(&vxi->vx_tasks))
+ unhash_vx_info(vxi);
+}
+
+
+#define task_get_vx_info(p) __task_get_vx_info(p,__FILE__,__LINE__)