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
