tzimmermann dot org

This is the website and blog of Thomas Zimmermann. Topics are picotm, transactions, and low-level software development.
On the web: 

Thomas Zimmermann • Jun 1, 2017 • 13 min read

Transactional memcpy() and Resource Privatization

So far we have implemented a simple transaction manager that loads and stores values in shared memory locations. These load and store operations copy values in and out of the transactional context. In this blog post we’re going to implement direct access to the shared memory. We also lay the foundation for operations besides memory access, such as function calls.  Read →

Thomas Zimmermann • May 31, 2017 • Less than a minute read

picotm 0.2.0 released

Today I released version 0.2.0 of picotm, the system-level transaction manager. Feature highlights of the new release are consistent error reporting and much improved documentation with tutorials and interface references.  Read →

Thomas Zimmermann • May 26, 2017 • 14 min read

Transactional Access to Arbitrary Memory Locations

In this blog post we are going to implement transactional semantics for arbitrary locations in main memory. So far our simpletm transaction manager can only handle integer values that we store in a dedicated data structure. At the end of this installment, we’ll be able to work with values of arbitrary types that are located (almost) anywhere in memory.  Read →

Thomas Zimmermann • May 19, 2017 • 13 min read

Writing the Beginning and End of a Transaction

Last time we finished our transaction manager and example program simpletm to contain the minimum functionality for conflict detection and transaction rollback. In this blog post we are going to separate application logic and transaction logic from each other. We will move the latter into a distinct module with a generic C interface for beginning and committing transactions.  Read →

Thomas Zimmermann • May 12, 2017 • 14 min read

Transaction Roll-Back and Serializability

In this blog post we’ll explore transaction roll-back code and briefly cover serializability. We’ll build upon our simple transaction manager and the theoretical foundation we’ve discussed last time. At the end of this post, we’ll have a simple, but correct transaction manager that can be adapted to arbitrary work loads.  Read →