From: Enrico Scholz Date: Thu, 22 Apr 2004 18:10:34 +0000 (+0000) Subject: updated to vs1.9.0pre12 X-Git-Tag: VERSION_0_10~91 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a30100797e85ba70292510d229a77e5d968d4c5c;p=util-vserver.git updated to vs1.9.0pre12 git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1492 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/kernel/network.h b/util-vserver/kernel/network.h index 11a8e7f..b3c39b0 100644 --- a/util-vserver/kernel/network.h +++ b/util-vserver/kernel/network.h @@ -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" diff --git a/util-vserver/kernel/sched.h b/util-vserver/kernel/sched.h index 0800461..1054da8 100644 --- a/util-vserver/kernel/sched.h +++ b/util-vserver/kernel/sched.h @@ -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); }