|
|
udi_cb_select_t(3udi)
Control block selections for incoming channel ops
#include <udi.h>typedef const struct { udi_index_t ops_idx; udi_index_t cb_idx; } udi_cb_select_t;MEMBERS cb_idx is a control block index number that must match a cb_idx value in a udi_cb_init_t associated with the udi_meta_init_t from which this structure is referenced, or must be zero to terminate a cb_select_list list to which this structure belongs (see udi_init_info).
DESCRIPTION The udi_cb_select_t structure contains information the environment needs to subsequently manage scratch requirements of control blocks that are passed across channels. This structure is part of udi_init_info.
udi_cb_select_t entries can be used to override the default algorithm for determining scratch requirements for control blocks that are received via channel operations when there are multiple udi_cb_init_t structures for the same meta_cb_num and meta_idx. By default, the scratch requirement is computed as the maximum from all matching udi_cb_init_t structures. However, if a udi_cb_select_t entry is present for the appropriate ops_idx that has a cb_idx matching one of the candidate udi_cb_init_t structures, then the scratch requirement from that structure is used instead.
udi_cb_select_t entries are optional and will not be needed by most drivers.
In all cases, control block allocation (with udi_cb_alloc) uses the specific properties associated with a control block index parameter, and is unaffected by udi_cb_select_t entries.
REFERENCES udi_init_info, udi_cb_init_t, udi_ops_init_t, udi_cb_alloc