cru_kill - stop a graph transformation job early
#include <cru/cru.h>
void
cru_kill
(
cru_kill_switch
k
,
int *err
)
Given a cru_kill_switch k previously obtained from cru_new_kill_switch and then passed to a cru library function taking a kill switch, this function causes the library function to terminate early. In so doing, the library function reclaims all storage in use, returns a NULL value, and reports an error of CRU_INTKIL by way of its *err parameter.
none
The err parameter is used to report any events preventing successful completion of the requested operation to the caller. If *err is zero on entry and the operation does not succeed, then *err is assigned a non-zero number. Positive numbers are for POSIX or user-defined error codes, and negative numbers down to -CRU_MAX_ERR are specific to cru.
Values of *err listed below refer to errors that are detected and handled. Unlisted values in the range of -CRU_INT_ERR through -CRU_MAX_ERR likely indicate internal errors attributable to bugs in cru. Any other unlisted values may indicate memory corruption or invalid usage of the API.
CRU_NULKIL
The paramter k is NULL.
CRU_BADKIL
The parameter k does not refer to a valid cru_kill_switch.
This function is useful only when called in the context of a separate thread from the job to be stopped.
To work around the limitation of kill switches being applicable to only one library function at a time, applications can allocate multiple kill switches through multiple calls to cru_new_kill_switch.
Because cru_kill does not interrupt user-written code, the library function can terminate only when all currently invoked user-written callback functions have returned. If immediate responses to killing events are required but callback functions are long-running, they should be designed to poll cru_killed and behave accordingly.
/usr/local/include/cru/cru.h
/usr/local/include/cru/data_types.h
/usr/local/include/cru/error_codes.h
cru, cru_bop, cru_bpred, cru_builder, cru_built, cru_cbop, cru_classifier, cru_class_of, cru_class_size, cru_composed, cru_composer, cru_connect, cru_connector, cru_cqop, cru_crossed, cru_crosser, cru_ctop, cru_ctop_pair, cru_ctop_quad, cru_data_types, cru_deduplicated, cru_destructor, cru_destructor_pair, cru_edge_count, cru_fabricated, cru_fabricator, cru_filter, cru_filtered, cru_fold, cru_free_kill_switch, cru_free_later, cru_free_now, cru_free_partition, cru_function_types, cru_get, cru_hash, cru_induced, cru_inducer, cru_kernel, cru_killed, cru_mapreduced, cru_mapreducer, cru_merged, cru_merger, cru_mutated, cru_mutator, cru_new_kill_switch, cru_nop, cru_order, cru_order_pair, cru_partition_of, cru_plan, cru_postponed, cru_postponer, cru_prop, cru_prop_pair, cru_pruner, cru_qop, cru_qpred, cru_set, cru_sig, cru_singleton, cru_split, cru_splitter, cru_spread, cru_strerror, cru_stretch, cru_stretched, cru_stretcher, cru_subconnector, cru_terminus_count, cru_top, cru_tpred, cru_united, cru_uop, cru_vertex_count, cru_zone
Dennis Furey (milonga@delayinsensitive.com)
https://github.com/gueststar/cru