1 #error THIS FILE SHOULD NO LONGER BE USED
9 #include <linux/kernel.h>
10 #include <linux/rcupdate.h>
11 #include <linux/sched.h>
13 #include "vserver/network.h"
16 #define nxdprintk(x...) printk("nxd: " x)
18 #define nxdprintk(x...)
22 extern int proc_pid_nx_info(struct task_struct *, char *);
25 #define get_nx_info(i) __get_nx_info(i,__FILE__,__LINE__)
27 static inline struct nx_info *__get_nx_info(struct nx_info *nxi,
28 const char *_file, int _line)
32 nxdprintk("get_nx_info(%p[#%d.%d])\t%s:%d\n",
33 nxi, nxi?nxi->nx_id:0, nxi?atomic_read(&nxi->nx_usecnt):0,
35 atomic_inc(&nxi->nx_usecnt);
40 #define free_nx_info(nxi) \
41 call_rcu(&nxi->nx_rcu, rcu_free_nx_info, nxi);
43 #define put_nx_info(i) __put_nx_info(i,__FILE__,__LINE__)
45 static inline void __put_nx_info(struct nx_info *nxi, const char *_file, int _line)
49 nxdprintk("put_nx_info(%p[#%d.%d])\t%s:%d\n",
50 nxi, nxi?nxi->nx_id:0, nxi?atomic_read(&nxi->nx_usecnt):0,
52 if (atomic_dec_and_test(&nxi->nx_usecnt))
57 #define set_nx_info(p,i) __set_nx_info(p,i,__FILE__,__LINE__)
59 static inline void __set_nx_info(struct nx_info **nxp, struct nx_info *nxi,
60 const char *_file, int _line)
65 nxdprintk("set_nx_info(%p[#%d.%d.%d])\t%s:%d\n",
66 nxi, nxi?nxi->nx_id:0,
67 nxi?atomic_read(&nxi->nx_usecnt):0,
68 nxi?atomic_read(&nxi->nx_refcnt):0,
70 atomic_inc(&nxi->nx_refcnt);
71 *nxp = __get_nx_info(nxi, _file, _line);
74 #define clr_nx_info(p) __clr_nx_info(p,__FILE__,__LINE__)
76 static inline void __clr_nx_info(struct nx_info **nxp,
77 const char *_file, int _line)
79 struct nx_info *nxo = *nxp;
83 nxdprintk("clr_nx_info(%p[#%d.%d.%d])\t%s:%d\n",
84 nxo, nxo?nxo->nx_id:0,
85 nxo?atomic_read(&nxo->nx_usecnt):0,
86 nxo?atomic_read(&nxo->nx_refcnt):0,
90 if (nxo && atomic_dec_and_test(&nxo->nx_refcnt))
92 __put_nx_info(nxo, _file, _line);
96 #define task_get_nx_info(i) __task_get_nx_info(i,__FILE__,__LINE__)
98 static __inline__ struct nx_info *__task_get_nx_info(struct task_struct *p,
99 const char *_file, int _line)
104 nxi = __get_nx_info(p->nx_info, _file, _line);
109 #define nx_verify_info(p,i) \
110 __nx_verify_info((p)->nx_info,i,__FILE__,__LINE__)
112 static __inline__ void __nx_verify_info(
113 struct nx_info *ipa, struct nx_info *ipb,
114 const char *_file, int _line)
118 printk(KERN_ERR "ip bad assumption (%p==%p) at %s:%d\n",
119 ipa, ipb, _file, _line);
123 #define nx_task_nid(t) ((t)->nid)
125 #define nx_current_nid() nx_task_nid(current)
127 #define nx_check(c,m) __nx_check(nx_current_nid(),c,m)
129 #define nx_weak_check(c,m) ((m) ? nx_check(c,m) : 1)
132 #define nxdprintk(x...)
135 #define __nx_flags(v,m,f) (((v) & (m)) ^ (f))
137 #define __nx_task_flags(t,m,f) \
138 (((t) && ((t)->nx_info)) ? \
139 __nx_flags((t)->nx_info->nx_flags,(m),(f)) : 0)
141 #define nx_current_flags() \
142 ((current->nx_info) ? current->nx_info->nx_flags : 0)
144 #define nx_flags(m,f) __nx_flags(nx_current_flags(),(m),(f))
147 #define nx_current_ncaps() \
148 ((current->nx_info) ? current->nx_info->nx_ncaps : 0)
150 #define nx_ncaps(c) (nx_current_ncaps() & (c))
154 #define sock_nx_init(s) do { \
156 (s)->sk_nx_info = NULL; \