updated to vs1.90pre9
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Wed, 14 Apr 2004 23:21:43 +0000 (23:21 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Wed, 14 Apr 2004 23:21:43 +0000 (23:21 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1451 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/kernel/context.h
util-vserver/kernel/cvirt.h
util-vserver/kernel/inode.h
util-vserver/kernel/legacy.h
util-vserver/kernel/limit.h
util-vserver/kernel/namespace.h
util-vserver/kernel/network.h
util-vserver/kernel/sched.h
util-vserver/kernel/switch.h
util-vserver/kernel/xid.h

index 52fe0b4..a51a035 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/list.h>
 #include <linux/spinlock.h>
 
-#define        _VX_INFO_DEF_
+#define _VX_INFO_DEF_
 #include "cvirt.h"
 #include "limit.h"
 #include "sched.h"
@@ -45,21 +45,21 @@ extern spinlock_t vxlist_lock;
 extern struct list_head vx_infos;
 
 
-#define        VX_ADMIN        0x0001
-#define        VX_WATCH        0x0002
+#define VX_ADMIN       0x0001
+#define VX_WATCH       0x0002
 #define VX_DUMMY       0x0008
 
-#define        VX_IDENT        0x0010
-#define        VX_EQUIV        0x0020
-#define        VX_PARENT       0x0040
-#define        VX_CHILD        0x0080
+#define VX_IDENT       0x0010
+#define VX_EQUIV       0x0020
+#define VX_PARENT      0x0040
+#define VX_CHILD       0x0080
 
-#define        VX_ARG_MASK     0x00F0
+#define VX_ARG_MASK    0x00F0
 
-#define        VX_DYNAMIC      0x0100
-#define        VX_STATIC       0x0200
+#define VX_DYNAMIC     0x0100
+#define VX_STATIC      0x0200
 
-#define        VX_ATR_MASK     0x0F00
+#define VX_ATR_MASK    0x0F00
 
 
 void free_vx_info(struct vx_info *);
@@ -76,16 +76,16 @@ extern int vx_migrate_task(struct task_struct *, struct vx_info *);
 
 /* vinfo commands */
 
-#define        VCMD_task_xid           VC_CMD(VINFO, 1, 0)
-#define        VCMD_task_nid           VC_CMD(VINFO, 2, 0)
+#define VCMD_task_xid          VC_CMD(VINFO, 1, 0)
+#define VCMD_task_nid          VC_CMD(VINFO, 2, 0)
 
 #ifdef __KERNEL__
 extern int vc_task_xid(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
 
-#define        VCMD_vx_info            VC_CMD(VINFO, 5, 0)
-#define        VCMD_nx_info            VC_CMD(VINFO, 6, 0)
+#define VCMD_vx_info           VC_CMD(VINFO, 5, 0)
+#define VCMD_nx_info           VC_CMD(VINFO, 6, 0)
 
 struct  vcmd_vx_info_v0 {
        uint32_t xid;
@@ -98,17 +98,17 @@ extern int vc_vx_info(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
 
-#define VCMD_create_context    VC_CMD(VSETUP, 1, 0)
-#define VCMD_migrate_context   VC_CMD(PROCMIG, 1, 0)
+#define VCMD_ctx_create                VC_CMD(VPROC, 1, 0)
+#define VCMD_ctx_migrate       VC_CMD(PROCMIG, 1, 0)
 
 #ifdef __KERNEL__
-extern int vc_create_context(uint32_t, void __user *);
-extern int vc_migrate_context(uint32_t, void __user *);
+extern int vc_ctx_create(uint32_t, void __user *);
+extern int vc_ctx_migrate(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
 
-#define VCMD_get_flags         VC_CMD(FLAGS, 1, 0)
-#define VCMD_set_flags         VC_CMD(FLAGS, 2, 0)
+#define VCMD_get_cflags                VC_CMD(FLAGS, 1, 0)
+#define VCMD_set_cflags                VC_CMD(FLAGS, 2, 0)
 
 struct  vcmd_ctx_flags_v0 {
        uint64_t flagword;
@@ -116,8 +116,8 @@ struct  vcmd_ctx_flags_v0 {
 };
 
 #ifdef __KERNEL__
-extern int vc_get_flags(uint32_t, void __user *);
-extern int vc_set_flags(uint32_t, void __user *);
+extern int vc_get_cflags(uint32_t, void __user *);
+extern int vc_set_cflags(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
 
@@ -131,9 +131,9 @@ extern int vc_set_flags(uint32_t, void __user *);
 #define VXF_INFO_ULIMIT                0x00000040
 #define VXF_INFO_NSPACE                0x00000080
 
-#define        VXF_SCHED_HARD          0x00000100
-#define        VXF_SCHED_PRIO          0x00000200
-#define        VXF_SCHED_PAUSE         0x00000400
+#define VXF_SCHED_HARD         0x00000100
+#define VXF_SCHED_PRIO         0x00000200
+#define VXF_SCHED_PAUSE                0x00000400
 
 #define VXF_VIRT_MEM           0x00010000
 #define VXF_VIRT_UPTIME                0x00020000
@@ -142,11 +142,11 @@ extern int vc_set_flags(uint32_t, void __user *);
 #define VXF_HIDE_MOUNT         0x01000000
 #define VXF_HIDE_NETIF         0x02000000
 
-#define        VXF_STATE_SETUP         (1ULL<<32)
-#define        VXF_STATE_INIT          (1ULL<<33)
+#define VXF_STATE_SETUP                (1ULL<<32)
+#define VXF_STATE_INIT         (1ULL<<33)
 
 
-#define        VXF_ONE_TIME            (0x0003ULL<<32)
+#define VXF_ONE_TIME           (0x0003ULL<<32)
 
 #define VCMD_get_ccaps         VC_CMD(FLAGS, 3, 0)
 #define VCMD_set_ccaps         VC_CMD(FLAGS, 4, 0)
index da8c185..a8a242e 100644 (file)
@@ -20,9 +20,9 @@ struct _vx_cvirt {
        unsigned long total_forks;
 
        unsigned int bias_cswtch;
-       long bias_jiffies;
-       long bias_idle;
+       struct timespec bias_idle;
        struct timespec bias_tp;
+       uint64_t bias_jiffies;
 
        struct new_utsname utsname;
 
@@ -42,16 +42,18 @@ static inline long vx_sock_total(struct _vx_cvirt *cvirt, int type, int pos)
 }
 
 
+extern uint64_t vx_idle_jiffies(void);
+
 static inline void vx_info_init_cvirt(struct _vx_cvirt *cvirt)
 {
        int i,j;
+       uint64_t idle_jiffies = vx_idle_jiffies();
 
        cvirt->nr_threads = 1;
        // new->virt.bias_cswtch = kstat.context_swtch;
-       cvirt->bias_jiffies = jiffies;
-       /* new->virt.bias_idle = init_tasks[0]->times.tms_utime +
-               init_tasks[0]->times.tms_stime;
-       */
+       cvirt->bias_jiffies = get_jiffies_64();
+
+       jiffies_to_timespec(idle_jiffies, &cvirt->bias_idle);
        do_posix_clock_monotonic_gettime(&cvirt->bias_tp);
 
        down_read(&uts_sem);
@@ -99,7 +101,7 @@ static inline int vx_info_proc_cvirt(struct _vx_cvirt *cvirt, char *buffer)
 
 struct timespec;
 
-void vx_vsi_uptime(struct timespec *uptime);
+void vx_vsi_uptime(struct timespec *uptime, struct timespec *idle);
 
 #endif /* __KERNEL__ */
 
index 0cf360c..aa8852f 100644 (file)
@@ -35,16 +35,16 @@ struct  vcmd_ctx_iattr_v1 {
 #define IATTR_FLAGS    0x00000007
 
 #define IATTR_BARRIER  0x00010000
-#define        IATTR_IUNLINK   0x00020000
-#define        IATTR_IMMUTABLE 0x00040000
+#define IATTR_IUNLINK  0x00020000
+#define IATTR_IMMUTABLE        0x00040000
 
 
 #ifdef CONFIG_PROC_SECURE
-#define        IATTR_PROC_DEFAULT      ( IATTR_ADMIN | IATTR_HIDE )
-#define        IATTR_PROC_SYMLINK      ( IATTR_ADMIN )
+#define IATTR_PROC_DEFAULT     ( IATTR_ADMIN | IATTR_HIDE )
+#define IATTR_PROC_SYMLINK     ( IATTR_ADMIN )
 #else
-#define        IATTR_PROC_DEFAULT      ( IATTR_ADMIN )
-#define        IATTR_PROC_SYMLINK      ( IATTR_ADMIN )
+#define IATTR_PROC_DEFAULT     ( IATTR_ADMIN )
+#define IATTR_PROC_SYMLINK     ( IATTR_ADMIN )
 #endif
 
 #ifdef __KERNEL__
@@ -61,7 +61,7 @@ extern int vc_set_iattr(uint32_t, void __user *);
 
 /* inode ioctls */
 
-#define        FIOC_GETXFLG    _IOR('x', 5, long)
-#define        FIOC_SETXFLG    _IOW('x', 6, long)
+#define FIOC_GETXFLG   _IOR('x', 5, long)
+#define FIOC_SETXFLG   _IOW('x', 6, long)
 
-#endif /* _VX_LEGACY_H */
+#endif /* _VX_INODE_H */
index 53c6dcd..1372c0f 100644 (file)
@@ -9,6 +9,8 @@
 #define VCMD_new_s_context     VC_CMD(COMPAT, 1, 1)
 #define VCMD_set_ipv4root      VC_CMD(COMPAT, 2, 3)
 
+#define VCMD_create_context    VC_CMD(VSETUP, 1, 0)
+
 /*  compatibiliy vserver arguments */
 
 struct  vcmd_new_s_context_v1 {
@@ -22,7 +24,7 @@ struct  vcmd_set_ipv4root_v3 {
        struct {
                uint32_t ip;
                uint32_t mask;
-       } ip_mask_pair[NB_IPV4ROOT];
+       } nx_mask_pair[NB_IPV4ROOT];
 };
 
 
index d8634ec..74e02cd 100644 (file)
@@ -5,9 +5,9 @@
 
 /* context sub struct */
 
-#define        NUM_RLIMITS     20
+#define NUM_RLIMITS    16
 
-#define        VLIMIT_SOCK     16
+#define VLIMIT_SOCK    16
 
 
 struct _vx_limit {
@@ -52,7 +52,6 @@ static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer)
 #ifndef _VX_LIMIT_H
 #define _VX_LIMIT_H
 
-#include <linux/compiler.h>
 #include "switch.h"
 
 /*  rlimit vserver commands */
@@ -79,6 +78,9 @@ struct  vcmd_ctx_rlimit_mask_v0 {
 #define CRLIM_KEEP             (~1ULL)
 
 #ifdef __KERNEL__
+
+#include <linux/compiler.h>
+
 extern int vc_get_rlimit(uint32_t, void __user *);
 extern int vc_set_rlimit(uint32_t, void __user *);
 extern int vc_get_rlimit_mask(uint32_t, void __user *);
index ac4e191..140fc79 100644 (file)
@@ -2,13 +2,12 @@
 #define _VX_NAMESPACE_H
 
 #include <linux/types.h>
-#include <linux/compiler.h>
 
        
 /* virtual host info names */
 
-#define        VCMD_vx_set_vhi_name    VC_CMD(VHOST, 1, 0)
-#define        VCMD_vx_get_vhi_name    VC_CMD(VHOST, 2, 0)
+#define VCMD_vx_set_vhi_name   VC_CMD(VHOST, 1, 0)
+#define VCMD_vx_get_vhi_name   VC_CMD(VHOST, 2, 0)
 
 struct  vcmd_vx_vhi_name_v0 {
        uint32_t field;
@@ -28,14 +27,17 @@ enum vx_vhi_name_field {
 
 
 #ifdef __KERNEL__
+
+#include <linux/compiler.h>
+
 extern int vc_set_vhi_name(uint32_t, void __user *);
 extern int vc_get_vhi_name(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
 
-#define        VCMD_enter_namespace    VC_CMD(PROCALT, 1, 0)
-#define        VCMD_cleanup_namespace  VC_CMD(PROCALT, 2, 0)
-#define        VCMD_set_namespace      VC_CMD(PROCALT, 3, 0)
+#define VCMD_enter_namespace   VC_CMD(PROCALT, 1, 0)
+#define VCMD_cleanup_namespace VC_CMD(PROCALT, 2, 0)
+#define VCMD_set_namespace     VC_CMD(PROCALT, 3, 0)
 
 #ifdef __KERNEL__
 
index 1389af8..11a8e7f 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef _VX_NETWORK_H
 #define _VX_NETWORK_H
 
+#define MAX_N_CONTEXT  65535   /* Arbitrary limit */
+
+#define IP_DYNAMIC_ID  ((uint32_t)-1)          /* id for dynamic context */
 
 #define NB_IPV4ROOT    16
 
 #include <asm/atomic.h>
 
 
-struct ip_info {
-       struct list_head ip_list;       /* linked list of ipinfos */
-       nid_t ip_id;                    /* vnet id */
-       atomic_t ip_refcount;
+struct nx_info {
+       struct list_head nx_list;       /* linked list of nxinfos */
+       nid_t nx_id;                    /* vnet id */
+       atomic_t nx_refcount;
+
+       uint64_t nx_flags;              /* network flag word */
+       uint64_t nx_ncaps;              /* network capabilities */
+
        int nbipv4;
        __u32 ipv4[NB_IPV4ROOT];        /* Process can only bind to these IPs */
                                        /* The first one is used to connect */
@@ -26,19 +33,103 @@ struct ip_info {
                                        /* Used to select the proper source */
                                        /* address for sockets */
        __u32 v4_bcast;                 /* Broadcast address to receive UDP  */
+
+       char nx_name[65];               /* network context name */
 };
 
 
 extern spinlock_t iplist_lock;
-extern struct list_head ip_infos;
+extern struct list_head nx_infos;
+
+
+void free_nx_info(struct nx_info *);
+struct nx_info *create_nx_info(void);
+
+extern struct nx_info *find_nx_info(int);
+extern int nx_info_id_valid(int);
+
+#endif /* __KERNEL__ */
+
+#include "switch.h"
+
+/* vinfo commands */
+
+#define VCMD_task_nid          VC_CMD(VINFO, 2, 0)
 
+#ifdef __KERNEL__
+extern int vc_task_nid(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
 
-void free_ip_info(struct ip_info *);
-struct ip_info *create_ip_info(void);
+#define VCMD_nx_info           VC_CMD(VINFO, 6, 0)
 
-extern struct ip_info *find_ip_info(int);
-extern int ip_info_id_valid(int);
+struct  vcmd_nx_info_v0 {
+       uint32_t nid;
+       /* more to come */      
+};
 
+#ifdef __KERNEL__
+extern int vc_nx_info(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
+
+#define VCMD_net_create                VC_CMD(VNET, 1, 0)
+#define VCMD_net_migrate       VC_CMD(NETMIG, 1, 0)
+
+#define VCMD_net_add           VC_CMD(NETALT, 1, 0)
+#define VCMD_net_remove                VC_CMD(NETALT, 2, 0)
+
+struct  vcmd_net_nx_v0 {
+       uint16_t type;
+       uint16_t count;
+       uint32_t ip[4];
+       uint32_t mask[4];
+       /* more to come */      
+};
+
+//     IPN_TYPE_IPV4   
+
+
+#ifdef __KERNEL__
+extern int vc_net_create(uint32_t, void __user *);
+extern int vc_net_migrate(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+#define VCMD_get_nflags                VC_CMD(FLAGS, 5, 0)
+#define VCMD_set_nflags                VC_CMD(FLAGS, 6, 0)
+
+struct  vcmd_net_flags_v0 {
+       uint64_t flagword;
+       uint64_t mask;
+};
+
+#ifdef __KERNEL__
+extern int vc_get_nflags(uint32_t, void __user *);
+extern int vc_set_nflags(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+#define IPF_STATE_SETUP                (1ULL<<32)
+
+
+#define IPF_ONE_TIME           (0x0001ULL<<32)
+
+#define VCMD_get_ncaps         VC_CMD(FLAGS, 7, 0)
+#define VCMD_set_ncaps         VC_CMD(FLAGS, 8, 0)
+
+struct  vcmd_net_caps_v0 {
+       uint64_t ncaps;
+       uint64_t cmask;
+};
+
+#ifdef __KERNEL__
+extern int vc_get_ncaps(uint32_t, void __user *);
+extern int vc_set_ncaps(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+#define IPC_WOSSNAME           0x00000001
+
+
 #endif /* _VX_NETWORK_H */
index c918e36..0800461 100644 (file)
@@ -63,15 +63,6 @@ static inline int vx_info_proc_sched(struct _vx_sched *sched, char *buffer)
 
 /*  sched vserver commands */
 
-#define VCMD_set_sched_v1      VC_CMD(SYSTEST, 1, 1)
-
-struct  vcmd_set_sched_v1 {
-       int32_t fill_rate;
-       int32_t period;
-       int32_t fill_level;
-       int32_t bucket_size;
-};
-
 #define VCMD_set_sched         VC_CMD(SCHED, 1, 2)
 
 struct  vcmd_set_sched_v2 {
index efbef33..5fef690 100644 (file)
 
 /*
 
-  Syscall Matrix V2.5
+  Syscall Matrix V2.6
 
          |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|
          |STATS  |DESTROY|ALTER  |CHANGE |LIMIT  |TEST   | |       |       |
          |INFO   |SETUP  |       |MOVE   |       |       | |       |       |
   -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  SYSTEM |VERSION|       |       |       |       |       | |DEVICES|       |
+  SYSTEM |VERSION|VSETUP |VHOST  |       |       |       | |DEVICES|       |
   HOST   |     00|     01|     02|     03|     04|     05| |     06|     07|
   -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  CPU    |       |       |PROCALT|PROCMIG|PROCTRL|       | |SCHED. |       |
+  CPU    |       |VPROC  |PROCALT|PROCMIG|PROCTRL|       | |SCHED. |       |
   PROCESS|     08|     09|     10|     11|     12|     13| |     14|     15|
   -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
   MEMORY |       |       |       |       |       |       | |SWAP   |       |
          |     16|     17|     18|     19|     20|     21| |     22|     23|
   -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  NETWORK|       |       |       |       |       |       | |SERIAL |       |
+  NETWORK|       |VNET   |NETALT |NETMIG |NETCTL |       | |SERIAL |       |
          |     24|     25|     26|     27|     28|     29| |     30|     31|
   -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
   DISK   |       |       |       |       |       |       | |INODE  |       |
 #define VC_CAT_VERSION         0
 
 #define VC_CAT_VSETUP          1
-#define        VC_CAT_VHOST            2
+#define VC_CAT_VHOST           2
        
-#define        VC_CAT_PROCALT          10
-#define        VC_CAT_PROCMIG          11
+#define VC_CAT_VPROC           9
+#define VC_CAT_PROCALT         10
+#define VC_CAT_PROCMIG         11
 #define VC_CAT_PROCTRL         12
 
 #define VC_CAT_SCHED           14
+
+#define VC_CAT_VNET            25
+#define VC_CAT_NETALT          26
+#define VC_CAT_NETMIG          27
+#define VC_CAT_NETCTRL         28
+
 #define VC_CAT_INODE           38
 
-#define        VC_CAT_VINFO            46
+#define VC_CAT_VINFO           46
 
 #define VC_CAT_FLAGS           52
 #define VC_CAT_RLIMIT          60
@@ -67,7 +74,7 @@
        
 /*  interface version */
 
-#define VCI_VERSION            0x00010014
+#define VCI_VERSION            0x00010016
 
 
 /*  query version */
 
 #include <linux/errno.h>
 
-#define        ENOTSUP         -EOPNOTSUPP
+#define ENOTSUP                -EOPNOTSUPP
 
 #else  /* __KERNEL__ */
-#define        __user
+#define __user
 #endif /* __KERNEL__ */
 
 #endif /* _VX_SWITCH_H */
index 2edba25..ba52c25 100644 (file)
@@ -1,64 +1,94 @@
-#ifndef _LINUX_VXID_H_
-#define _LINUX_VXID_H_
+#ifndef _LINUX_XID_H_
+#define _LINUX_XID_H_
 
 #ifdef CONFIG_INOXID_NONE
 
-#define        INOXID_UID(uid, gid)            (uid)
-#define        INOXID_GID(uid, gid)            (gid)
-#define        INOXID_XID(uid, gid, xid)       (0)
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0xFFFFFFFF
 
-#define        XIDINO_UID(uid, xid)            (uid)
-#define        XIDINO_GID(gid, xid)            (gid)
+#define INOXID_XID(uid, gid, xid)      (0)
 
-#define        MAX_UID         0xFFFFFFFF
-#define        MAX_GID         0xFFFFFFFF
+#define XIDINO_UID(uid, xid)           (uid)
+#define XIDINO_GID(gid, xid)           (gid)
 
 #endif
 
+
 #ifdef CONFIG_INOXID_GID16
 
-#define        INOXID_UID(uid, gid)            (uid)
-#define        INOXID_GID(uid, gid)            ((gid) & 0xFFFF)
-#define        INOXID_XID(uid, gid, xid)       (((gid) >> 16) & 0xFFFF)
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0x0000FFFF
+
+#define INOXID_XID(uid, gid, xid)      (((gid) >> 16) & 0xFFFF)
 
-#define        XIDINO_UID(uid, xid)            (uid)
-#define        XIDINO_GID(gid, xid)            (((gid) & 0xFFFF) | ((xid) << 16))
+#define XIDINO_UID(uid, xid)           (uid)
+#define XIDINO_GID(gid, xid)           (((gid) & 0xFFFF) | ((xid) << 16))
 
-#define        MAX_UID         0xFFFFFFFF
-#define        MAX_GID         0x0000FFFF
 
 #endif
 
+
 #ifdef CONFIG_INOXID_GID24
 
-#define        INOXID_UID(uid, gid)            ((uid) & 0xFFFFFF)
-#define        INOXID_GID(uid, gid)            ((gid) & 0xFFFFFF)
-#define        INOXID_XID(uid, gid, xid)       ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF))
+#define MAX_UID                0x00FFFFFF
+#define MAX_GID                0x00FFFFFF
 
-#define        XIDINO_UID(uid, xid)            (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16))
-#define        XIDINO_GID(gid, xid)            (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24))
+#define INOXID_XID(uid, gid, xid)      ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF))
 
-#define        MAX_UID         0x00FFFFFF
-#define        MAX_GID         0x00FFFFFF
+#define XIDINO_UID(uid, xid)           (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16))
+#define XIDINO_GID(gid, xid)           (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24))
 
 #endif
 
+
 #ifdef CONFIG_INOXID_GID32
 
-#define        INOXID_UID(uid, gid)            (uid)
-#define        INOXID_GID(uid, gid)            (gid)
-#define        INOXID_XID(uid, gid, xid)       (xid)
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0xFFFFFFFF
+
+#define INOXID_XID(uid, gid, xid)      (xid)
+
+#define XIDINO_UID(uid, xid)           (uid)
+#define XIDINO_GID(gid, xid)           (gid)
+
+#endif
+
+
+#ifdef CONFIG_INOXID_RUNTIME
 
-#define        XIDINO_UID(uid, xid)            (uid)
-#define        XIDINO_GID(gid, xid)            (gid)
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0xFFFFFFFF
 
-#define        MAX_UID         0xFFFFFFFF
-#define        MAX_GID         0xFFFFFFFF
+#define INOXID_XID(uid, gid, xid)      (0)
+
+#define XIDINO_UID(uid, xid)           (uid)
+#define XIDINO_GID(gid, xid)           (gid)
 
 #endif
 
-#define        FIOC_GETXID     _IOR('x', 1, long)
-#define        FIOC_SETXID     _IOW('x', 2, long)
-#define        FIOC_SETXIDJ    _IOW('x', 3, long)
 
+#define INOXID_UID(uid, gid)           ((uid) & MAX_UID)
+#define INOXID_GID(uid, gid)           ((gid) & MAX_GID)
+
+static inline uid_t vx_map_uid(uid_t uid)
+{
+       if ((uid > MAX_UID) && (uid != -1))
+               uid = -2;
+       return (uid & MAX_UID);
+}
+
+static inline gid_t vx_map_gid(gid_t gid)
+{
+       if ((gid > MAX_GID) && (gid != -1))
+               gid = -2;
+       return (gid & MAX_GID);
+}
+
+
+#ifdef CONFIG_VSERVER_LEGACY           
+#define FIOC_GETXID    _IOR('x', 1, long)
+#define FIOC_SETXID    _IOW('x', 2, long)
+#define FIOC_SETXIDJ   _IOW('x', 3, long)
 #endif
+
+#endif /* _LINUX_XID_H_ */