The set of locks and write-set pointers (together!).
A lock is a unsigned int of the size of a pointer (mtm_word_t). The LSB is the lock bit. If it is set, this means:
- At least some covered memory addresses is being written.
- Write-back (ETL): all bits of the lock apart from the lock bit form a pointer that points to the write log entry holding the new value. Multiple values covered by the same log entry and orginized in a linked list in the write log.
- Write-through and write-back (CTL): all bits of the lock apart from the lock bit form a pointer that points to the transaction descriptor containing the write-set. If the lock bit is not set, then:
- All covered memory addresses contain consistent values.
- Write-back (ETL and CTL): all bits of the lock besides the lock bit contain a version number (timestamp).
- Write-through: all bits of the lock besides the lock bit contain a version number.
- The high order bits contain the commit time.
- The low order bits contain an incarnation number (incremented upon abort while writing the covered memory addresses). When using the PRIORITY contention manager, the format of locks is slightly different. It is documented elsewhere.
- See also:
- locks.h
Definition at line 48 of file mtm.c.