CALLBACK(9)            NetBSD Kernel Developer's Manual            CALLBACK(9)

NAME
     callback -- generic callback interface

SYNOPSIS
     #include <sys/callback.h>

     void
     callback_head_init(struct callback_head *ch, int ipl);

     void
     callback_head_destroy(struct callback_head *ch);

     void
     callback_register(struct callback_head *ch, struct callback_entry *ce,
         void *obj, int (*fn)(struct callback_entry *, void *, void *));

     void
     callback_unregister(struct callback_head *ch, struct callback_entry *ce);

     int
     callback_run_roundrobin(struct callback_head *ch, void *arg);

DESCRIPTION
     The generic callback interface allows lower-level layer code to execute a
     registered function, or set of functions, from the higher-level layer.

     Registered functions must return one of these constants:

     CALLBACK_CHAIN_CONTINUE
                   Indicates that the function call was successful.  The fol-
                   lowing functions in the chain will be called.

     CALLBACK_CHAIN_ABORT
                   Indicates a failure case in the function call.  Any follow-
                   ing functions in the chain will not be executed.

FUNCTIONS
     The callback structure callback_head should be initialized and destroyed
     using the functions described below.  This structure contains the list of
     callback entries and other internal data.

     The callback_entry structure is an entry, normally associated with the
     higher-level object.  It contains the internal data of the callback
     interface.

     callback_head_init(ch, ipl)
              Initialize the callback structure specified by ch.  The highest
              IPL at which this callback can be used is specified by ipl.

     callback_head_destroy(ch)
              Destroy the callback structure specified by ch.  The caller must
              unregister all functions before destroying the callback struc-
              ture.

     callback_register(ch, ce, obj, fn)
              Register the callback function in the callback structure speci-
              fied by ch.  ce should point to the entry structure of the call-
              back object.  The callback object itself is specified by obj.
              The function pointer is specified by fn.

     callback_unregister(ch, ce)
              Unregister the callback function from the structure specified by
              ch.  The entry should be passed as ce.  This function may block.

     callback_run_roundrobin(ch, arg)
              Executes all functions registered in the callback structure,
              specified by ch.  The functions are executed in round-robin
              fashion.  The value of arg will be passed to the callback func-
              tions.

CODE REFERENCES
     The callback interface is implemented within the file
     sys/kern/subr_callback.c.

SEE ALSO
     intro(9)

NetBSD 5.0                     October 28, 2009                     NetBSD 5.0