5 #include "vserver/cvirt.h"
6 #include "vserver/debug.h"
9 /* utsname virtualization */
11 static inline struct new_utsname *vx_new_utsname(void)
14 return ¤t->vx_info->cvirt.utsname;
15 return &system_utsname;
18 #define vx_new_uts(x) ((vx_new_utsname())->x)
21 /* pid faking stuff */
24 #define vx_info_map_pid(v,p) \
25 __vx_info_map_pid((v), (p), __FUNC__, __FILE__, __LINE__)
26 #define vx_info_map_tgid(v,p) vx_info_map_pid(v,p)
27 #define vx_map_pid(p) vx_info_map_pid(current->vx_info, p)
28 #define vx_map_tgid(p) vx_map_pid(p)
30 static inline int __vx_info_map_pid(struct vx_info *vxi, int pid,
31 const char *func, const char *file, int line)
33 if (vx_info_flags(vxi, VXF_INFO_INIT, 0)) {
34 vxfprintk(VXD_CBIT(cvirt, 2),
35 "vx_map_tgid: %p/%llx: %d -> %d",
36 vxi, (long long)vxi->vx_flags, pid,
37 (pid && pid == vxi->vx_initpid)?1:pid,
41 if (pid == vxi->vx_initpid)
47 #define vx_info_rmap_pid(v,p) \
48 __vx_info_rmap_pid((v), (p), __FUNC__, __FILE__, __LINE__)
49 #define vx_rmap_pid(p) vx_info_rmap_pid(current->vx_info, p)
50 #define vx_rmap_tgid(p) vx_rmap_pid(p)
52 static inline int __vx_info_rmap_pid(struct vx_info *vxi, int pid,
53 const char *func, const char *file, int line)
55 if (vx_info_flags(vxi, VXF_INFO_INIT, 0)) {
56 vxfprintk(VXD_CBIT(cvirt, 2),
57 "vx_rmap_tgid: %p/%llx: %d -> %d",
58 vxi, (long long)vxi->vx_flags, pid,
59 (pid == 1)?vxi->vx_initpid:pid,
61 if ((pid == 1) && vxi->vx_initpid)
62 return vxi->vx_initpid;
63 if (pid == vxi->vx_initpid)
70 static inline void vx_activate_task(struct task_struct *p)
74 if ((vxi = p->vx_info)) {
76 atomic_inc(&vxi->cvirt.nr_running);
80 static inline void vx_deactivate_task(struct task_struct *p)
84 if ((vxi = p->vx_info)) {
86 atomic_dec(&vxi->cvirt.nr_running);
90 static inline void vx_uninterruptible_inc(struct task_struct *p)
94 if ((vxi = p->vx_info))
95 atomic_inc(&vxi->cvirt.nr_uninterruptible);
98 static inline void vx_uninterruptible_dec(struct task_struct *p)
102 if ((vxi = p->vx_info))
103 atomic_dec(&vxi->cvirt.nr_uninterruptible);
108 #warning duplicate inclusion