tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
anonymous_namespace{irrevocability.cpp} Namespace Reference

Functions

NORETURN void abort_irrevocable (TxThread *tx)
 
stm::scope_trollback_irrevocable (STM_ROLLBACK_SIG(,,,))
 
void unset_irrevocable_barriers (TxThread &tx)
 
TM_FASTCALL void commit_irrevocable (STM_COMMIT_SIG(tx,))
 
void set_irrevocable_barriers (TxThread &tx)
 

Variables

AbortHandler old_abort_handler = NULL
 

Function Documentation

NORETURN void anonymous_namespace{irrevocability.cpp}::abort_irrevocable ( TxThread tx)

Handler for abort attempts while irrevocable. Useful for trapping problems early.

Here is the call graph for this function:

Here is the caller graph for this function:

TM_FASTCALL void anonymous_namespace{irrevocability.cpp}::commit_irrevocable ( STM_COMMIT_SIG(tx,)  )

custom commit for irrevocable transactions

Here is the call graph for this function:

Here is the caller graph for this function:

stm::scope_t* anonymous_namespace{irrevocability.cpp}::rollback_irrevocable ( STM_ROLLBACK_SIG(,,,)  )

Handler for rollback attempts while irrevocable. Useful for trapping problems early.

NB: For whatever reason a 'using stm::scope_t' triggers an ICE in Mac OS X's default gcc-4.2.1. It's fine if we use the fully qualified namespace here.

Here is the call graph for this function:

Here is the caller graph for this function:

void anonymous_namespace{irrevocability.cpp}::set_irrevocable_barriers ( TxThread tx)
inline

Sets all of the barriers to be irrevocable, except tmbegin.

Here is the call graph for this function:

Here is the caller graph for this function:

void anonymous_namespace{irrevocability.cpp}::unset_irrevocable_barriers ( TxThread tx)
inline

Resets all of the barriers to be the curr_policy bariers, except for tmabort which reverts to the one we saved, and tmbegin which should be done manually in the caller.

Here is the caller graph for this function:

Variable Documentation

AbortHandler anonymous_namespace{irrevocability.cpp}::old_abort_handler = NULL

The abort handler is set during sys_init. We overwrite it with abort_irrevocable when a transaction becomes irrevocable, and we save the old one here so we can restore it during commit.