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 10.99 October 28, 2009 NetBSD 10.99
Powered by man-cgi (2024-08-26). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.