X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Flinux%2Fvs_cvirt.h;h=616706e8b3f52a6f735522e8e85715d4f9f59852;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=07c3e862024fde234d029cbea0e120221f6572dd;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/include/linux/vs_cvirt.h b/include/linux/vs_cvirt.h index 07c3e8620..616706e8b 100644 --- a/include/linux/vs_cvirt.h +++ b/include/linux/vs_cvirt.h @@ -21,43 +21,76 @@ static inline struct new_utsname *vx_new_utsname(void) /* pid faking stuff */ -#define vx_map_tgid(v,p) \ - __vx_map_tgid((v), (p), __FILE__, __LINE__) +#define vx_info_map_pid(v,p) \ + __vx_info_map_pid((v), (p), __FUNC__, __FILE__, __LINE__) +#define vx_map_pid(p) vx_info_map_pid(current->vx_info, p) +#define vx_map_tgid(p) vx_map_pid(p) -static inline int __vx_map_tgid(struct vx_info *vxi, int pid, - char *file, int line) +static inline int __vx_info_map_pid(struct vx_info *vxi, int pid, + const char *func, const char *file, int line) { - if (vxi && __vx_flags(vxi->vx_flags, VXF_INFO_INIT, 0)) { - vxlprintk(VXD_CBIT(cvirt, 2), + if (vx_info_flags(vxi, VXF_INFO_INIT, 0)) { + vxfprintk(VXD_CBIT(cvirt, 2), "vx_map_tgid: %p/%llx: %d -> %d", - vxi, vxi->vx_flags, pid, - (pid == vxi->vx_initpid)?1:pid, - file, line); + vxi, (long long)vxi->vx_flags, pid, + (pid && pid == vxi->vx_initpid)?1:pid, + func, file, line); + if (pid == 0) + return 0; if (pid == vxi->vx_initpid) return 1; } return pid; } -#define vx_rmap_tgid(v,p) \ - __vx_rmap_tgid((v), (p), __FILE__, __LINE__) +#define vx_info_rmap_pid(v,p) \ + __vx_info_rmap_pid((v), (p), __FUNC__, __FILE__, __LINE__) +#define vx_rmap_pid(p) vx_info_rmap_pid(current->vx_info, p) +#define vx_rmap_tgid(p) vx_rmap_pid(p) -static inline int __vx_rmap_tgid(struct vx_info *vxi, int pid, - char *file, int line) +static inline int __vx_info_rmap_pid(struct vx_info *vxi, int pid, + const char *func, const char *file, int line) { - if (vxi && __vx_flags(vxi->vx_flags, VXF_INFO_INIT, 0)) { - vxlprintk(VXD_CBIT(cvirt, 2), + if (vx_info_flags(vxi, VXF_INFO_INIT, 0)) { + vxfprintk(VXD_CBIT(cvirt, 2), "vx_rmap_tgid: %p/%llx: %d -> %d", - vxi, vxi->vx_flags, pid, + vxi, (long long)vxi->vx_flags, pid, (pid == 1)?vxi->vx_initpid:pid, - file, line); + func, file, line); if ((pid == 1) && vxi->vx_initpid) return vxi->vx_initpid; + if (pid == vxi->vx_initpid) + return ~0U; } return pid; } +static inline void vx_activate_task(struct task_struct *p) +{ + struct vx_info *vxi; + + // if ((vxi = task_get_vx_info(p))) { + if ((vxi = p->vx_info)) { + vx_update_load(vxi); + atomic_inc(&vxi->cvirt.nr_running); + // put_vx_info(vxi); + } +} + +static inline void vx_deactivate_task(struct task_struct *p) +{ + struct vx_info *vxi; + + // if ((vxi = task_get_vx_info(p))) { + if ((vxi = p->vx_info)) { + vx_update_load(vxi); + atomic_dec(&vxi->cvirt.nr_running); + // put_vx_info(vxi); + } +} + + #else #warning duplicate inclusion #endif