git: kernel - Implement new callout*() core
dillon at crater.dragonflybsd.org
Tue Nov 25 10:22:17 PST 2014
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Nov 25 10:15:42 2014 -0800
kernel - Implement new callout*() core
* Rewrite the callout*() function core to run more efficiently.
This has a much better mechanism for locking a callout to a
cpu and for dealing with synchronous waits for callbacks to
The IPI busy/wait loop has been removed for remote-cpu operations.
The code now blocks normally and callers will have to understand that.
This will make it a lot easier to debug races.
* Add callout_init_lk() which implements auto-locking similar
to FreeBSD. Several FreeBSD mechanisms already depend on it
and it will make porting easier. And it works pretty well.
* Preparation for a more synchronous interface.
* Note that the new API is roughly similar to the old
except callout_reset() now issues a synchronous stop
instead of an asynchronous stop. Soon we will also
switch around the function names to make MP operation
and synchronous operation the default across the
Summary of changes:
sys/kern/kern_timeout.c | 822 +++++++++++++++++++++++++++++++++------------
sys/netinet/sctp_callout.h | 2 +
sys/sys/callout.h | 128 ++++++-
3 files changed, 716 insertions(+), 236 deletions(-)
DragonFly BSD source repository
More information about the Commits