What problem does it solve?
EPICS module developers need reliable, OS-independent building blocks for concurrency, timing, inter-thread communication, and lifecycle integration.
Core Features & Use Cases
- Threading with epicsThread: Create runnable threads, manage priorities and stack sizes, and use one-time initialization and thread-local storage.
- Synchronization & messaging: Use epicsMutex, epicsEvent, and epicsMessageQueue for safe coordination between threads.
- Performance-oriented data structures: Apply epicsRingPointer and epicsRingBytes for lock-free or bounded buffering patterns.
- Timers, time, and observability: Schedule periodic work with epicsTimer, handle timestamps with epicsTime, and log issues via errlog.
- IOC integration primitives: Register IOC shell commands, init hooks, exit handlers, and subroutine/aSub functions to wire logic into IOC lifecycles.
- Networking portability (osiSock): Abstract socket creation and address conversion for cross-platform support.
Quick Start
Ask the AI to generate a minimal, production-style EPICS module snippet that uses an epicsThread worker plus an epicsEvent-driven shutdown, logs startup/shutdown with errlog, and registers an iocsh command for toggling the worker behavior.