/* * An action_manager provides a generic mechanism for applying actions to multi-zone entities (such * as the block map or slab depot). Each action manager is tied to a specific context for which it * manages actions. The manager ensures that only one action is active on that context at a time, * and supports at most one pending action. Calls to schedule an action when there is already a * pending action will result in VDO_COMPONENT_BUSY errors. Actions may only be submitted to the * action manager from a single thread (which thread is determined when the action manager is * constructed). * * A scheduled action consists of four components: * * preamble * an optional method to be run on the initiator thread before applying the action to all zones * zone_action * an optional method to be applied to each of the zones * conclusion * an optional method to be run on the initiator thread once the per-zone method has been * applied to all zones * parent * an optional completion to be finished once the conclusion is done * * At least one of the three methods must be provided.
*/
/* * A function which is to be applied asynchronously to a set of zones. * @context: The object which holds the per-zone context for the action * @zone_number: The number of zone to which the action is being applied * @parent: The object to notify when the action is complete
*/ typedefvoid (*vdo_zone_action_fn)(void *context, zone_count_t zone_number, struct vdo_completion *parent);
/* * A function which is to be applied asynchronously on an action manager's initiator thread as the * preamble of an action. * @context: The object which holds the per-zone context for the action * @parent: The object to notify when the action is complete
*/ typedefvoid (*vdo_action_preamble_fn)(void *context, struct vdo_completion *parent);
/* * A function which will run on the action manager's initiator thread as the conclusion of an * action. * @context: The object which holds the per-zone context for the action * * Return: VDO_SUCCESS or an error
*/ typedefint (*vdo_action_conclusion_fn)(void *context);
/* * A function to schedule an action. * @context: The object which holds the per-zone context for the action * * Return: true if an action was scheduled
*/ typedefbool (*vdo_action_scheduler_fn)(void *context);
/* * A function to get the id of the thread associated with a given zone. * @context: The action context * @zone_number: The number of the zone for which the thread ID is desired
*/ typedef thread_id_t (*vdo_zone_thread_getter_fn)(void *context, zone_count_t zone_number);
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.2Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.