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.