distortos
v0.7.0
object-oriented C++ RTOS for microcontrollers
|
Internals of distortos project - should not be used directly! More...
Classes | |
class | BoundQueueFunctor |
BoundQueueFunctor is a type-erased QueueFunctor which calls its bound functor to execute actions on queue's storage. More... | |
class | CopyConstructQueueFunctor |
class | DeferredThreadDeleter |
DeferredThreadDeleter class can be used to defer deletion of dynamic detached threads. More... | |
class | DynamicThreadBase |
DynamicThreadBase class is a type-erased interface for thread that has dynamic storage for bound function, stack and - if signals are enabled - internal DynamicSignalsReceiver object. More... | |
class | FifoQueueBase |
FifoQueueBase class implements basic functionality of FifoQueue template class. More... | |
class | InterruptMaskingUnmaskingLock |
InterruptMaskingUnmaskingLock class is a RAII wrapper for interrupt mask manipulation. More... | |
class | InterruptUnmaskingLock |
class | MemcpyPopQueueFunctor |
MemcpyPopQueueFunctor is a functor used for popping of data from the raw queue with memcpy() More... | |
class | MemcpyPushQueueFunctor |
MemcpyPushQueueFunctor is a functor used for pushing of data to the raw queue with memcpy() More... | |
class | MessageQueueBase |
MessageQueueBase class implements basic functionality of MessageQueue template class. More... | |
class | MoveConstructQueueFunctor |
class | MutexControlBlock |
MutexControlBlock class is a control block for Mutex. More... | |
class | MutexListNode |
MutexListNode class is a base for MutexControlBlock that serves as a node in intrusive list of mutexes (mutex control blocks) More... | |
class | QueueFunctor |
QueueFunctor is a type-erased interface for functors which execute some action on queue's storage (like copy-constructing, swapping, destroying, emplacing, ...). More... | |
class | RoundRobinQuantum |
RoundRobinQuantum class is a quantum of time for round-robin scheduling. More... | |
class | RunnableThread |
RunnableThread class defines additional interface functions required for the thread to be actually runnable. More... | |
class | Scheduler |
Scheduler class is a system's scheduler. More... | |
class | SemaphoreFunctor |
SemaphoreFunctor is a type-erased interface for functors which execute some action on semaphore (wait(), tryWait(), tryWaitFor(), tryWaitUntil(), ...). More... | |
class | SemaphoreTryWaitForFunctor |
SemaphoreTryWaitForFunctor class is a SemaphoreFunctor which calls Semaphore::tryWaitFor() with bound duration. More... | |
class | SemaphoreTryWaitFunctor |
SemaphoreTryWaitFunctor class is a SemaphoreFunctor which calls Semaphore::tryWait() More... | |
class | SemaphoreTryWaitUntilFunctor |
class | SemaphoreWaitFunctor |
SemaphoreWaitFunctor class is a SemaphoreFunctor which calls Semaphore::wait() More... | |
class | SignalInformationQueue |
SignalInformationQueue class can be used for queuing of SignalInformation objects. More... | |
class | SignalsCatcherControlBlock |
SignalsCatcherControlBlock class is a structure required by threads for "catching" and "handling" of signals. More... | |
class | SignalsReceiverControlBlock |
SignalsReceiverControlBlock class is a structure required by threads for "receiving" of signals. More... | |
struct | SoftwareTimerAscendingTimePoint |
functor which gives ascending expiration time point order of elements on the list More... | |
class | SoftwareTimerControlBlock |
SoftwareTimerControlBlock class is a control block of software timer. More... | |
class | SoftwareTimerListNode |
SoftwareTimerListNode class is a base for SoftwareTimerControlBlock that serves as a node in intrusive list of software timers (software timer control blocks) More... | |
class | SoftwareTimerSupervisor |
SoftwareTimerSupervisor class is a supervisor of software timers. More... | |
class | Stack |
Stack class is an abstraction of architecture's stack. More... | |
class | StaticThreadBase |
StaticThreadBase class is a templated common base for StaticThread. More... | |
class | SwapPopQueueFunctor |
class | ThreadCommon |
ThreadCommon class implements common functionality of threads. More... | |
class | ThreadControlBlock |
ThreadControlBlock class is a simple description of a Thread. More... | |
struct | ThreadDescendingEffectivePriority |
functor which gives descending effective priority order of elements on the list More... | |
class | ThreadGroupControlBlock |
ThreadGroupControlBlock class is a control block for ThreadGroup. More... | |
class | ThreadList |
sorted intrusive list of threads (thread control blocks) More... | |
class | ThreadListNode |
ThreadListNode class is a base for ThreadControlBlock that provides nodes for intrusive lists. More... | |
class | UnblockFunctor |
Typedefs | |
using | SoftwareTimerList = estd::SortedIntrusiveList< SoftwareTimerAscendingTimePoint, SoftwareTimerListNode, &SoftwareTimerListNode::node, SoftwareTimerControlBlock > |
sorted intrusive list of software timers (software timer control blocks) More... | |
using | MutexList = estd::IntrusiveList< MutexListNode, &MutexListNode::node, MutexControlBlock > |
intrusive list of mutexes (mutex control blocks) More... | |
Enumerations | |
enum | UnblockReason : uint8_t { UnblockReason::unblockRequest, UnblockReason::timeout, UnblockReason::signal } |
reason of thread unblocking More... | |
Functions | |
void | forceContextSwitch () |
Forces unconditional context switch. More... | |
void | threadExiter (RunnableThread &runnableThread) |
Thread "exiter" function. More... | |
void | threadRunner (RunnableThread &runnableThread) |
Thread runner function - entry point of threads. More... | |
template<typename T , typename U > | |
void | dummyDeleter (U *) |
A "no-op" dummy deleter that can be used with std::unique_ptr and automatic storage that is trivially destructible. More... | |
constexpr DeferredThreadDeleter & | getDeferredThreadDeleter () |
template<typename T , typename U > | |
void | storageDeleter (U *const storage) |
Templated deleter that can be used with std::unique_ptr and dynamic storage allocated with new T[]. More... | |
constexpr Mutex & | getMallocMutex () |
constexpr Scheduler & | getScheduler () |
template<typename F > | |
constexpr BoundQueueFunctor< F > | makeBoundQueueFunctor (F &&boundFunctor) |
Helper factory function to make BoundQueueFunctor object with deduced template arguments. More... | |
Variables | |
DeferredThreadDeleter | deferredThreadDeleterInstance |
main instance of DeferredThreadDeleter More... | |
Mutex | mallocMutexInstance {Mutex::Type::recursive, Mutex::Protocol::priorityInheritance} |
main instance of Mutex used for malloc() and free() locking More... | |
Scheduler | schedulerInstance |
main instance of system's Scheduler More... | |
constexpr size_t | stackGuardSize |
size of "stack guard", bytes More... | |
Internals of distortos project - should not be used directly!
using distortos::internal::MutexList = typedef estd::IntrusiveList<MutexListNode, &MutexListNode::node, MutexControlBlock> |
intrusive list of mutexes (mutex control blocks)
using distortos::internal::SoftwareTimerList = typedef estd::SortedIntrusiveList<SoftwareTimerAscendingTimePoint, SoftwareTimerListNode, &SoftwareTimerListNode::node, SoftwareTimerControlBlock> |
sorted intrusive list of software timers (software timer control blocks)
|
strong |
void distortos::internal::dummyDeleter | ( | U * | ) |
A "no-op" dummy deleter that can be used with std::unique_ptr and automatic storage that is trivially destructible.
T | is the real type of storage, must be trivially destructible |
U | is the type of storage pointer |
[in] | storage | is a pointer to storage |
void distortos::internal::forceContextSwitch | ( | ) |
Forces unconditional context switch.
Requests unconditional context switch and temporarily disables any interrupt masking.
constexpr DeferredThreadDeleter& distortos::internal::getDeferredThreadDeleter | ( | ) |
constexpr Mutex& distortos::internal::getMallocMutex | ( | ) |
constexpr Scheduler& distortos::internal::getScheduler | ( | ) |
constexpr BoundQueueFunctor<F> distortos::internal::makeBoundQueueFunctor | ( | F && | boundFunctor | ) |
Helper factory function to make BoundQueueFunctor object with deduced template arguments.
F | is the type of bound functor, it will be called with void* as only argument |
[in] | boundFunctor | is a rvalue reference to bound functor which will be used to move-construct returned object |
void distortos::internal::storageDeleter | ( | U *const | storage | ) |
Templated deleter that can be used with std::unique_ptr and dynamic storage allocated with new T[].
T | is the real type of allocated storage |
U | is the type of storage pointer |
[in] | storage | is a pointer to storage that will be deleted |
void distortos::internal::threadExiter | ( | RunnableThread & | runnableThread | ) |
Thread "exiter" function.
Performs following actions:
This function never returns.
[in] | runnableThread | is a reference to RunnableThread object that is being exited |
void distortos::internal::threadRunner | ( | RunnableThread & | runnableThread | ) |
Thread runner function - entry point of threads.
Performs following actions:
This function never returns.
[in] | runnableThread | is a reference to RunnableThread object that is being run |
DeferredThreadDeleter distortos::internal::deferredThreadDeleterInstance |
main instance of DeferredThreadDeleter
Mutex distortos::internal::mallocMutexInstance {Mutex::Type::recursive, Mutex::Protocol::priorityInheritance} |
main instance of Mutex used for malloc() and free() locking
constexpr size_t distortos::internal::stackGuardSize |
size of "stack guard", bytes