37#if defined(__has_attribute)
38#if __has_attribute(acquire_capability)
42extern struct __attribute__((capability("
mutex"))) {
44} __rvm_transaction__, __no_transaction__;
47#define BEGINS_TRANSACTION \
48 __attribute__((release_capability(__no_transaction__))) \
49 __attribute__((acquire_capability(__rvm_transaction__)))
50#define ENDS_TRANSACTION \
51 __attribute__((release_capability(__rvm_transaction__))) \
52 __attribute__((acquire_capability(__no_transaction__)))
56#define REQUIRES_TRANSACTION \
57 __attribute__((requires_capability(__rvm_transaction__)))
69#define EXCLUDES_TRANSACTION \
70 __attribute__((requires_capability(__no_transaction__)))
79#define TRANSACTION_OPTIONAL __attribute__((no_thread_safety_analysis))
83#define RVM_OBJECT __attribute__((guarded_by(__rvm_transaction__)))
84#define RVM_OBJECT_PTR __attribute__((pt_guarded_by(__rvm_transaction__)))
104#ifndef REQUIRES_TRANSACTION
105#define BEGINS_TRANSACTION
106#define ENDS_TRANSACTION
107#define REQUIRES_TRANSACTION
108#define EXCLUDES_TRANSACTION
109#define TRANSACTION_OPTIONAL
111#define RVM_OBJECT_PTR
#define REQUIRES_TRANSACTION
Definition: coda_tsa.h:107
#define ENDS_TRANSACTION
Definition: coda_tsa.h:106
#define BEGINS_TRANSACTION
Definition: coda_tsa.h:105
int rvm_return_t
Definition: rvm.h:94
rvm_return_t rvm_modify_bytes(rvm_tid_t *tid, void *dest, const void *src, rvm_length_t length)
Definition: rvm_trans.c:464
rvm_return_t rvm_abort_transaction(rvm_tid_t *tid)
Definition: rvm_trans.c:888
rvm_mode_t
Definition: rvm.h:82
rvm_return_t rvm_end_transaction(rvm_tid_t *tid, rvm_mode_t mode)
Definition: rvm_trans.c:919
unsigned long rvm_length_t
Definition: rvm.h:140
rvm_return_t rvm_set_range(rvm_tid_t *tid, void *dest, rvm_length_t length)
Definition: rvm_trans.c:426
rvm_return_t rvm_begin_transaction(rvm_tid_t *tid, rvm_mode_t mode)
Definition: rvm_trans.c:853
Definition: cthreads.h:46