git: kernel - Implement new callout*() core

Matthew Dillon dillon at
Tue Nov 25 10:22:17 PST 2014

commit d0f829f6fc7b1c33c7790ed3d68343f1153d9d31
Author: Matthew Dillon <dillon at>
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 mailing list