7 typedef struct udi_cb_s udi_cb_t;
8 typedef void udi_cb_alloc_call_t(udi_cb_t *gcb, udi_cb_t *new_cb);
9 typedef void udi_cb_alloc_batch_call_t(udi_cb_t *gcb, udi_cb_t *first_new_cb);
10 typedef void udi_cancel_call_t(udi_cb_t *gcb);
12 #define UDI_GCB(mcb) (&(mcb)->gcb)
13 #define UDI_MCB(gcb, cb_type) ((cb_type *)(gcb))
16 * \brief Describes a generic control block
22 * \brief Channel associated with the control block
24 udi_channel_t channel;
26 * \brief Current state
27 * \note Driver changable
31 * \brief CB's scratch area
35 * \brief Source-usable value
37 void *initiator_context;
39 * \brief Request Handle?
44 extern void udi_cb_alloc (
45 udi_cb_alloc_call_t *callback,
48 udi_channel_t default_channel
51 extern void udi_cb_alloc_dynamic(
52 udi_cb_alloc_call_t *callback,
55 udi_channel_t default_channel,
56 udi_size_t inline_size,
57 udi_layout_t *inline_layout
60 extern void udi_cb_alloc_batch(
61 udi_cb_alloc_batch_call_t *callback,
65 udi_boolean_t with_buf,
67 udi_buf_path_t path_handle
70 extern void udi_cb_free(udi_cb_t *cb);
72 extern void udi_cancel(udi_cancel_call_t *callback, udi_cb_t *gcb);