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
- 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.
- The Module Interface 
 Picotm is extensible. This section explains the module interface and how to implement your own module on top.
- 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.
- 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.
- 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.
- 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.
- 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.
- The C Math Library Module 
 Covers the C Math Library module. This module provides transactional C math functions, suchsqrt()orpow().
- The POSIX Threads module. 
 Covers the POSIX Threads interface.