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
My patch was quite bogus, of course :( We can have as many threads as
we like spinning and the scheduler will cheerfully timeslice between
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.