netdev
[Top] [All Lists]

Re: modular net drivers

To: Richard Gooch <rgooch@xxxxxxxxxxxxxxx>
Subject: Re: modular net drivers
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Sun, 25 Jun 2000 12:29:02 +1000
Cc: Philipp Rumpf <prumpf@xxxxxxxxxxxxxxxxxxxxxx>, Philipp Rumpf <prumpf@xxxxxxxx>, Rusty Russell <rusty@xxxxxxxxxxxxxxxx>, Keith Owens <kaos@xxxxxxxxxx>, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx>, "netdev@xxxxxxxxxxx" <netdev@xxxxxxxxxxx>
References: <20000624093548.A31621@puffin.external.hp.com>, <20000623164805.AA5BB8154@halfway> <3954262D.60BDEF41@uow.edu.au> <20000624080106.A25102@fruits.uzix.org> <3954D42A.938A724B@uow.edu.au> <20000624093548.A31621@puffin.external.hp.com> <200006241548.e5OFmiC09138@vindaloo.ras.ucalgary.ca>
Sender: owner-netdev@xxxxxxxxxxx
Richard Gooch wrote:
> 
> Or why not use smp_call_function()? Just move it from the i386 tree to
> the generic tree.

The comment above smp_call_function() says "<func> The function to run.
This must be fast and non-blocking."  I think the cross-CPU function is
basically an ISR; starting a kernel thread from there would be
interesting.

My patch was quite bogus, of course :(  We can have as many threads as
we like spinning and the scheduler will cheerfully timeslice between
them.

Right now, I'm not sure how to implement this puppy. I don't see how to
ensure that the sub-thread is running on another CPU.  I know that, in
practice, the subthread _does_ run on another CPU because I relied on
that in my del_timer_sync test suite.  But this depends upon scheduler
vagaries which may not remain true.

Perhaps we just create (smp_num_cpus * 10) threads and any time we see a
non-captured CPU we do a local_irq_disable() and spin.  How delightful.

Thinking caps, gentlemen.

<Prev in Thread] Current Thread [Next in Thread>