updated to vs1.9.0pre12
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Thu, 22 Apr 2004 18:10:34 +0000 (18:10 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Thu, 22 Apr 2004 18:10:34 +0000 (18:10 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1492 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/kernel/network.h
util-vserver/kernel/sched.h

index 11a8e7f..b3c39b0 100644 (file)
@@ -38,7 +38,7 @@ struct nx_info {
 };
 
 
-extern spinlock_t iplist_lock;
+extern spinlock_t nxlist_lock;
 extern struct list_head nx_infos;
 
 
@@ -48,6 +48,13 @@ struct nx_info *create_nx_info(void);
 extern struct nx_info *find_nx_info(int);
 extern int nx_info_id_valid(int);
 
+struct in_ifaddr;
+struct net_device;
+
+int ifa_in_nx_info(struct in_ifaddr *, struct nx_info *);
+int dev_in_nx_info(struct net_device *, struct nx_info *);
+
+
 #endif /* __KERNEL__ */
 
 #include "switch.h"
index 0800461..1054da8 100644 (file)
@@ -105,17 +105,26 @@ static inline void vx_consume_token(struct vx_info *vxi)
        atomic_dec(&vxi->sched.tokens);
 }
 
-static inline int vx_need_resched(struct task_struct *p, struct vx_info *vxi)
+static inline int vx_need_resched(struct task_struct *p)
 {
-       p->time_slice--;
+#ifdef CONFIG_VSERVER_HARDCPU
+       struct vx_info *vxi = p->vx_info;
+
        if (vxi) {
                int tokens;
+
+               p->time_slice--;
+               if (atomic_read(&vxi->vx_refcount) < 1)
+                       printk("need_resched: p=%p, s=%ld, ref=%d, id=%d/%d\n",
+                               p, p->state, atomic_read(&vxi->vx_refcount),
+                               vxi->vx_id, p->xid);
                if ((tokens = vx_tokens_avail(vxi)) > 0)
                        vx_consume_token(vxi);
-
                return ((p->time_slice == 0) || (tokens < 1));
-       } else
-               return (p->time_slice == 0);
+       }
+#endif
+       p->time_slice--;
+       return (p->time_slice == 0);
 }