| To: | Andrew Morton <andrewm@xxxxxxxxxx>, Philipp Rumpf <prumpf@xxxxxxxx> |
|---|---|
| Subject: | Re: modular net drivers |
| From: | Philipp Rumpf <prumpf@xxxxxxxxxxxxxxxxxxxxxx> |
| Date: | Sat, 24 Jun 2000 09:35:48 -0600 |
| Cc: | Rusty Russell <rusty@xxxxxxxxxxxxxxxx>, Keith Owens <kaos@xxxxxxxxxx>, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx>, "netdev@xxxxxxxxxxx" <netdev@xxxxxxxxxxx> |
| In-reply-to: | <3954D42A.938A724B@uow.edu.au>; from Andrew Morton on Sun, Jun 25, 2000 at 01:30:50AM +1000 |
| References: | <20000623164805.AA5BB8154@halfway> <3954262D.60BDEF41@uow.edu.au>, <3954262D.60BDEF41@uow.edu.au> <20000624080106.A25102@fruits.uzix.org> <3954D42A.938A724B@uow.edu.au> |
| Sender: | owner-netdev@xxxxxxxxxxx |
On Sun, Jun 25, 2000 at 01:30:50AM +1000, Andrew Morton wrote:
> +static volatile int ice_block;
> +static spinlock_t freeze_lock = SPIN_LOCK_UNLOCKED;
> +
> +static int
> +antarctica(void *dummy)
> +{
> + printk("start antarctica on %d\n", smp_processor_id());
> + while (ice_block)
> + ;
> + printk("stop antarctica on %d\n", smp_processor_id());
> + return 0;
> +}
> +
> +static int
> +freeze_other_cpus(void)
> +{
> + int cpu, retval;
> +
> + if (!spin_trylock(&freeze_lock))
> + return -EAGAIN;
> +
> + printk("start freeze_other_cpus()\n");
> + ice_block = 1;
> + for (cpu = 0; cpu < smp_num_cpus - 1; cpu++) {
> + retval = kernel_thread(antarctica, (void *)0, 0);
> + if (retval < 0)
> + goto out_melt;
> + }
> + printk("continue freeze_other_cpus()\n");
> + return 0;
> +out_melt:
> + ice_block = 0;
> + spin_unlock(&freeze_lock);
> + return retval;
> +}
You don't guarantee all the other kernel_threads have started executing.
Basically you need either an atomic_inc or a per-CPU flag somewhere.
Philipp Rumpf
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: modular net drivers, Andrew Morton |
|---|---|
| Next by Date: | Re: modular net drivers, Richard Gooch |
| Previous by Thread: | Re: modular net drivers, Andrew Morton |
| Next by Thread: | Re: modular net drivers, Richard Gooch |
| Indexes: | [Date] [Thread] [Top] [All Lists] |