The picotm System-Level Transaction Manager

Picotm is a system-level transaction manager. It provides transactional semantics for low-level and operating-system functionality. It’s flexible and extensible to cover exactly your requirements. Error handling and thread isolation are provided by picotm, all you have to implement is the application logic.

Picotm is implemented in plain C and is well-suited for implementing applications and firmware that is secure, reliable and thread-safe; yet easy to develop. This makes picotm well-suited for multi-threaded and fault-tolerant software.

Picotm is Open Source under the terms of the MIT License; viable for use in free and proprietary software.

Table of Contents

  1. The picotm Programming Interface
    This section provides information for users of picotm. It explains the concept of transactions and how to run a transaction with picotm.
  2. The Module Interface
    Picotm is extensible. This section explains the module interface and how to implement your own module on top.
  3. The Transactional Memory Module
    The Transactional Memory module provides transactional semantics when accessing main memory. You can load and store variables in main memory, or adopt memory regions into a transactions.
  4. The Type-Casting Module
    The type-casting module provides safe casting between C types. Overflows or underflows in the destination type's range are reported as errors to the transaction.
  5. The Arithmetic Module
    The arithmetic module provides safe arithmetics for C types. Overflows or underflows in the type's range are reported as errors to the transaction.
  6. The Transactional Data-Structures Module
    The txlib module provides data structures that are safe to use from within transactions and cooperate with the transaction manager. Currently supported are lists, queues, multisets and stacks.
  7. The C Standard Library Module
    Covers the C Standard Library module. This module offers many features of the C Standard Library and POSIX standard, such as string and memory functions, memory allocation, and file-descriptor I/O.
  8. The C Math Library Module
    Covers the C Math Library module. This module provides transactional C math functions, such sqrt() or pow().
  9. The POSIX Threads module.
    Covers the POSIX Threads interface.