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

Functions

 THREAD_LOCAL_DECL_TYPE (_ITM_transaction *) td
 
void tmabort (stm::TxThread *tx)
 

Function Documentation

anonymous_namespace{libitm-5.1,5.cpp}::THREAD_LOCAL_DECL_TYPE ( _ITM_transaction )

Our thread local transaction descriptor. On most platforms this uses __thread or its equivalent, but on Mac OS X—or if explicitly selected by the user—it will use a specialized template-based Pthreads implementation.

void anonymous_namespace{libitm-5.1,5.cpp}::tmabort ( stm::TxThread tx)

This is what the stm library will call when it detects a conflict and needs to abort. We always retry in this case, and if we have a registered thrown object we ignore it (the thrown object only pertains to explicit cancel-and-throw calls, which must happen in a consistent context).

Don't need any of the funky user-visible abort handling because the abort is invisible. Just treat it like a restart of the current scope. This is passed to sys_init.

Since the stm abort path doesn't protect the stack (RSTM assumes for the moment that aborts are implemented via a longjmp-style mechanism), the best that we can do is to protect the stack from here on. This is fine because we /do/ have a longjmp-style abort mechanism, and any stack clobbering that happens here is not an issue.

Here is the call graph for this function:

Here is the caller graph for this function: