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
following functions in the chain will be called.
-
-
CALLBACK_CHAIN_ABORT
- Indicates a failure case in the function call. Any
following 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 structure.
-
-
- callback_register(ch,
ce, obj,
fn)
- Register the callback function in the callback structure
specified by ch. ce should
point to the entry structure of the callback 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 functions.
CODE REFERENCES
The
callback interface is implemented within the file
sys/kern/subr_callback.c.
SEE ALSO
intro(9)