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
..
2006-09-03 00:26:17 +00:00
2007-12-15 23:13:31 +00:00
2007-03-21 21:20:51 +00:00
2007-11-08 14:47:55 +00:00
2007-06-26 21:31:56 +00:00
2005-10-18 11:46:24 +00:00
2007-03-31 23:23:42 +00:00
2006-05-12 05:04:46 +00:00
2008-03-02 07:39:22 +00:00
2008-03-28 19:07:25 +00:00
2007-05-22 06:51:38 +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-17 10:33:23 +00:00
2006-10-31 21:11:21 +00:00
2008-03-28 12:30:12 +00:00
2008-03-22 09:15:16 +00:00
2008-03-15 06:44:45 +00:00
2008-03-20 21:24:32 +00:00
2008-04-02 11:20:30 +00:00
2008-03-25 21:30:01 +00:00
2006-10-24 10:27:23 +00:00
2008-03-12 06:31:06 +00:00
2008-03-17 13:17:10 +00:00
2006-11-01 04:54:51 +00:00
2006-09-27 19:57:02 +00:00
2007-12-26 16:45:35 +00:00
2007-03-26 18:03:29 +00:00
2008-03-30 11:31:14 +00:00
2006-09-27 19:57:02 +00:00
2006-08-16 09:34:56 +00:00
2007-05-05 17:02:19 +00:00
2008-03-12 18:25:47 +00:00
2006-08-07 12:02:43 +00:00
2006-10-17 05:43:30 +00:00
2006-10-17 05:43:30 +00:00
2007-12-02 00:05:18 +00:00
2005-12-18 19:43:33 +00:00
2007-11-28 21:54:46 +00:00
2008-01-24 17:10:19 +00:00
2008-03-19 09:58:25 +00:00
2007-03-16 19:18:49 +00:00
2008-03-31 12:14:04 +00:00
2008-01-08 21:58:16 +00:00
2007-05-31 11:51:53 +00:00
2007-04-05 21:10:53 +00:00
2007-02-15 17:21:31 +00:00
2006-03-29 18:17:03 +00:00
2007-10-24 21:33:00 +00:00
2007-04-09 22:55:14 +00:00
2005-12-26 21:23:57 +00:00
2008-03-31 12:05:52 +00:00
2008-03-17 22:42:01 +00:00
2006-09-27 19:57:02 +00:00
2007-04-27 11:19:05 +00:00
2006-01-10 09:19:10 +00:00
2008-02-12 20:55:03 +00:00
2006-09-22 22:11:29 +00:00
2007-04-05 23:19:13 +00:00
2006-09-27 19:57:02 +00:00
2007-12-25 17:52:02 +00:00
2008-03-16 11:01:32 +00:00
2007-12-26 10:57:35 +00:00
2006-08-24 21:09:39 +00:00
2007-10-26 17:03:22 +00:00
2006-01-25 14:57:23 +00:00
2008-02-23 01:01:49 +00:00
2007-04-10 21:42:12 +00:00
2005-12-02 07:45:28 +00:00
2007-04-03 18:33:41 +00:00
2007-12-01 19:24:28 +00:00
2007-12-16 06:07:34 +00:00
2008-02-13 20:44:19 +00:00
2008-03-26 15:23:12 +00:00
2008-03-28 12:30:12 +00:00
2007-02-06 16:24:57 +00:00
2007-11-10 19:11:51 +00:00
2008-03-25 09:39:02 +00:00
2005-09-19 08:07:18 +00:00
2006-03-15 19:47:12 +00:00
2005-11-11 11:31:23 +00:00
2008-03-28 04:29:27 +00:00
2008-03-16 10:58:09 +00:00
2008-03-01 19:47:50 +00:00
2006-12-18 18:48:28 +00:00
2005-11-30 05:12:03 +00:00
2006-09-03 00:33:19 +00:00
2007-11-19 23:36:47 +00:00
2008-03-31 12:01:21 +00:00
2008-04-01 20:33:06 +00:00
2007-10-24 20:51:44 +00:00
2008-03-06 17:24:28 +00:00
2006-09-27 19:57:02 +00:00
2008-01-14 06:33:41 +00:00
2007-12-07 08:20:17 +00:00
2007-12-07 08:20:17 +00:00
2006-11-11 16:19:12 +00:00
2007-01-08 21:21:45 +00:00
2008-02-15 20:26:17 +00:00
2008-03-21 08:23:25 +00:00
2006-07-24 15:20:08 +00:00
2006-02-06 09:41:56 +00:00
2006-10-24 11:19:21 +00:00
2005-09-27 18:01:33 +00:00
2007-11-29 06:34:30 +00:00
2008-03-16 21:29:02 +00:00
2006-06-12 04:06:21 +00:00
2007-11-10 15:06:30 +00:00
2007-01-08 21:21:45 +00:00
2008-03-20 05:51:16 +00:00
2008-04-01 20:31:55 +00:00
2008-03-20 03:09:15 +00:00
2006-01-06 22:12:46 +00:00
2007-12-16 06:21:20 +00:00
2006-11-07 18:56:48 +00:00
2006-03-30 17:24:42 +00:00
2008-02-12 20:55:03 +00:00
2008-01-19 21:41:31 +00:00
2007-11-05 11:36:16 +00:00
2008-03-12 06:31:06 +00:00
2008-03-02 07:58:42 +00:00
2005-09-18 19:23:35 +00:00
2008-02-03 15:54:41 +00:00
2008-02-04 12:25:13 +00:00
2006-07-09 06:04:01 +00:00
2006-11-26 11:55:48 +00:00
2007-12-02 20:40:35 +00:00
2008-03-31 12:14:04 +00:00
2007-12-15 23:13:31 +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-20 05:51:16 +00:00
2007-07-12 18:01:31 +00:00
2007-05-29 15:14:46 +00:00
2008-03-31 12:12:27 +00:00
2008-03-26 20:09:21 +00:00
2008-03-25 22:38:45 +00:00
2007-08-16 05:26:42 +00:00
2008-03-31 12:14:04 +00:00
2006-03-01 06:48:31 +00:00
2005-10-23 04:22:56 +00:00
2007-12-28 07:03:26 +00:00
2007-12-16 06:12:53 +00:00
2006-01-10 09:19:10 +00:00
2006-09-27 19:57:02 +00:00
2006-01-10 09:19:10 +00:00
2007-06-04 23:51:44 +00:00
2008-03-02 07:39:22 +00:00
2006-05-12 05:04:46 +00:00
2007-12-07 01:46:13 +00:00
2006-11-29 19:08:45 +00:00
2008-04-02 04:08:37 +00:00
2007-04-07 18:31:40 +00:00
2007-12-30 01:42:15 +00:00
2008-02-09 05:16:26 +00:00
2005-10-07 13:37:10 +00:00
2007-09-25 06:25:06 +00:00
2008-03-31 11:53:03 +00:00
2008-03-02 00:52:49 +00:00
2005-11-10 05:00:20 +00:00
2006-12-15 21:44:49 +00:00