18 #ifndef FOEDUS_XCT_XCT_ACCESS_HPP_
19 #define FOEDUS_XCT_XCT_ACCESS_HPP_
112 owner_id_address_ = owner_id_address;
113 owner_lock_id_ = owner_lock_id;
252 #endif // FOEDUS_XCT_XCT_ACCESS_HPP_
friend std::ostream & operator<<(std::ostream &o, const LockFreeReadXctAccess &v)
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.
Represents a record of special read-access during a transaction without any need for locking...
const storage::PageVersion * address_
Address to the page version.
Definitions of IDs in this package and a few related constant values.
Forward declarations of classes in log manager package.
uint32_t StorageId
Unique ID for storage.
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.
friend std::ostream & operator<<(std::ostream &o, const ReadXctAccess &v)
Forward declarations of classes in transaction package.
Represents a pointer to a volatile page with modification count for preventing ABA.
Just a synonym of XctId to be used as a page lock mechanism.
storage::PageVersionStatus observed_
Value of the page version as of the access.
Persistent status part of Transaction ID.
Represents a record of read-access during a transaction.
static bool compare(const RecordXctAccess &left, const RecordXctAccess &right) __attribute__((always_inline))
sort the write set in a unique order.
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.
storage::StorageId storage_id_
The storage we accessed.
Forward declarations of classes in storage package.
static bool compare(const WriteXctAccess &left, const WriteXctAccess &right) __attribute__((always_inline))
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.
friend std::ostream & operator<<(std::ostream &o, const WriteXctAccess &v)
RwLockableXctId * owner_id_address_
Pointer to the accessed record.
char * payload_address_
Pointer to the payload of the 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.
Forward declarations of classes in memory package.
friend std::ostream & operator<<(std::ostream &o, const LockFreeWriteXctAccess &v)
friend std::ostream & operator<<(std::ostream &o, const PageVersionAccess &v)
Base of ReadXctAccess and WriteXctAccess.
log::RecordLogType * log_entry_
Pointer to the log entry in private log buffer for this write opereation.
Base class for log type of record-wise operation.
Represents a record of following a page pointer during a transaction.
UniversalLockId owner_lock_id_
Universal Lock ID of the lock in the record.
#define ALWAYS_INLINE
A function suffix to hint that the function should always be inlined.
Represents a record of reading a page during a transaction.
friend std::ostream & operator<<(std::ostream &o, const PointerAccess &v)
void set_owner_id_and_lock_id(RwLockableXctId *owner_id_address, UniversalLockId owner_lock_id)
Setter for owner_id_address_/owner_lock_id_.
static bool compare(const ReadXctAccess &left, const ReadXctAccess &right) __attribute__((always_inline))
storage::StorageId storage_id_
The storage we accessed.