readline C++ wrapper simplifies usage of the readline and history libraries for C++ programmers. Not all of the readline features are wrapped; however, the most often used are covered, including: editing the input line based on the user preferences; command history; saving/loading the command history to/from specified files; custom completers via standard containers; and binding keys to boost::function calls.
Finite State Machine C++ Template provides a flexible and a type-safe implementation of finite state machine engine. The main features are type safety, user-provided types for states and events, an explicit description of all the transitions concentrated in one place, the ability to form machine behaviour on-the-fly, and the ability to provide user-defined actions for exceptional situations.
Daemonisation with Feedback is a set of functions which simplifies the development of applications that should operate as daemons. The functions support notification from the daemon (whether the daemon startup completed successfully) back to the parent process. At the debugging stage, the daemonization can be switched off via a compiler option.
Mumufs is a virtual file system to support IPC of type many-to-many. It resides in RAM, and supports regular files, directories, symbolic, and hard links. Each file on mumufs is associated with a data block of an arbitrary size. Read/write operations for a file correspond to read/write operations from/to the corresponding data block. Each successful write to a file operation replaces the previously stored data block. Each new read/write operation must start from the shift 0 from the beginning of a file. An operation is considered successful only if the whole data block is read or written. Each file can be opened for reading and writing simultaneously many times. Both blocking and non-blocking IO are supported. Mumufs supports select ? poll operations.
mi is a Linux command line utility that can identify potential deadlocks in multi-threaded applications. It can also collect statistics such as number of successful and failed mutex operations, time spent acquiring mutex locks, etc. It can also show call stacks for all mutex operations. It is able to identify the following conditions: the order of locking two mutexes in one thread is opposite to the order of locking the same mutexes in another thread; unlocking a mutex that was not locked earlier; a mutex is left locked after an application has finished; the order of unlocking mutexes does not correspond to the reverse order of locking these mutexes; and unlocking a mutex that was locked earlier in another thread.