Jeff Roberson 8d809d5061 Implement per-cpu callout threads, wheels, and locks.
- Move callout thread creation from kern_intr.c to kern_timeout.c
 - Call callout_tick() on every processor via hardclock_cpu() rather than
   inspecting callout internal details in kern_clock.c.
 - Remove callout implementation details from callout.h
 - Package up all of the global variables into a per-cpu callout structure.
 - Start one thread per-cpu.  Threads are not strictly bound.  They prefer
   to execute on the native cpu but may migrate temporarily if interrupts
   are starving callout processing.
 - Run all callouts by default in the thread for cpu0 to maintain current
   ordering and concurrency guarantees.  Many consumers may not properly
   handle concurrent execution.
 - The new callout_reset_on() api allows specifying a particular cpu to
   execute the callout on.  This may migrate a callout to a new cpu.
   callout_reset() schedules on the last assigned cpu while
   callout_reset_curcpu() schedules on the current cpu.

Reviewed by:	phk
Sponsored by:	Nokia
2008-04-02 11:20:30 +00:00
..
2007-03-16 13:39:04 +00:00
2006-03-23 08:47:28 +00:00
2007-10-21 17:29:06 +00:00
2008-03-25 21:30:01 +00:00
2007-12-26 16:45:35 +00:00
2006-08-16 09:34:56 +00:00
2008-03-12 18:25:47 +00:00
2007-12-02 00:05:18 +00:00
2008-03-31 12:05:52 +00:00
2008-03-17 22:42:01 +00:00
2006-09-22 22:11:29 +00:00
2007-12-16 06:07:34 +00:00
2007-02-06 16:24:57 +00:00
2005-09-19 08:07:18 +00:00
2006-11-11 16:19:12 +00:00
2008-02-04 12:25:13 +00:00
2006-11-26 11:55:48 +00:00
2007-12-02 20:40:35 +00:00
2008-03-31 12:12:27 +00:00
2008-03-31 12:12:27 +00:00
2008-03-31 12:04:20 +00:00
2008-03-31 12:12:27 +00:00
2006-03-01 06:48:31 +00:00
2006-11-29 19:08:45 +00:00