33 o <<
"<PointerAccess><address>" << v.
address_ <<
"</address>"
39 o <<
"<PageVersionAccess><address>" << v.
address_ <<
"</address>"
40 <<
"<observed>" << v.
observed_ <<
"</observed></PageVersionAccess>";
45 o <<
"<ReadXctAccess><storage>" << v.
storage_id_ <<
"</storage>"
47 <<
"<ordinal_>" << v.
ordinal_ <<
"</ordinal_>"
51 <<
"<owner_lock_id>" << v.
owner_lock_id_ <<
"</owner_lock_id><log>";
53 o <<
"<HasRelatedWrite />";
55 o <<
"</ReadXctAccess>";
60 o <<
"<WriteAccess><storage>" << v.
storage_id_ <<
"</storage>"
63 <<
"<ordinal_>" << v.
ordinal_ <<
"</ordinal_>"
65 <<
"<owner_lock_id>" << v.
owner_lock_id_ <<
"</owner_lock_id><log>";
69 o <<
"<HasRelatedRead />";
71 o <<
"</WriteAccess>";
76 o <<
"<LockFreeReadXctAccess>"
81 o <<
"</LockFreeReadXctAccess>";
86 o <<
"<LockFreeWriteXctAccess>"
89 o <<
"</LockFreeWriteXctAccess>";
ReadXctAccess * related_read_
log::RecordLogType * log_entry_
Pointer to the log entry in private log buffer for this write opereation.
RwLockableXctId * owner_id_address_
Pointer to the TID we protect against.
std::ostream & operator<<(std::ostream &o, const LockEntry &v)
Debugging.
Represents a record of special read-access during a transaction without any need for locking...
const storage::PageVersion * address_
Address to the page version.
uint32_t ordinal_
Indicates the ordinal among ReadXctAccess/WriteXctAccess of this transaction.
XctId observed_owner_id_
Transaction ID of the record observed as of the access.
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
Represents a record of write-access during a transaction.
const storage::VolatilePagePointer * address_
Address of the volatile pointer.
storage::VolatilePagePointer observed_
Value of the volatile pointer as of the access.
storage::PageVersionStatus observed_
Value of the page version as of the access.
Represents a record of read-access during a transaction.
Represents a record of special write-access during a transaction without any need for locking...
XctId observed_owner_id_
XID value we observed.
uintptr_t UniversalLockId
Universally ordered identifier of each lock.
The MCS reader-writer lock variant of LockableXctId.
UniversalLockId xct_id_to_universal_lock_id(const memory::GlobalVolatilePageResolver &resolver, RwLockableXctId *lock)
storage::StorageId storage_id_
The storage we accessed.
Definitions of IDs in this package and a few related constant values.
void set_owner_id_resolve_lock_id(const memory::GlobalVolatilePageResolver &resolver, RwLockableXctId *owner_id_address)
Calculate owner_lock_id using the resolver.
RwLockableXctId * owner_id_address_
Pointer to the accessed record.
storage::StorageId storage_id_
The storage we accessed.
WriteXctAccess * related_write_
An optional member that points to a write access related to this read.
void invoke_ostream(const void *buffer, std::ostream *ptr)
Invokes the ostream operator for the given log type defined in log_type.xmacro.
Convenient way of writing hex integers to stream.
log::RecordLogType * log_entry_
Pointer to the log entry in private log buffer for this write opereation.
Represents a record of following a page pointer during a transaction.
UniversalLockId owner_lock_id_
Universal Lock ID of the lock in the record.
Represents a record of reading a page during a transaction.
void set_owner_id_and_lock_id(RwLockableXctId *owner_id_address, UniversalLockId owner_lock_id)
Setter for owner_id_address_/owner_lock_id_.
storage::StorageId storage_id_
The storage we accessed.