CRU_KILL (3)
CRU MANUAL
CRU_KILL (3)

NAME

cru_kill - stop a graph transformation job early

SYNOPSIS

#include <cru/cru.h>

void cru_kill (
   cru_kill_switch k ,
   int *err )

DESCRIPTION

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.

RETURN VALUE

none

ERRORS

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.

NOTES

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.

FILES

/usr/local/include/cru/cru.h

/usr/local/include/cru/data_types.h

/usr/local/include/cru/error_codes.h

SEE ALSO

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

AUTHOR

Dennis Furey (milonga@delayinsensitive.com)

PROJECT PAGE

https://github.com/gueststar/cru

CRU VERSION 0.15.3
October 05, 2024
CRU_KILL (3)