tin  1.5.9
sync.h File Reference

Cooperative synchronization primitives for static tsm tasks. More...

#include <algorithm>
#include <array>
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <type_traits>
#include <utility>
#include "tsm/runtime/coroutine.h"
#include "tsm/runtime/policy.h"
Include dependency graph for sync.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  tsm::event_flag< MaxWaiters >
 
class  tsm::event_flag< MaxWaiters >::wait_awaitable
 
class  tsm::irq_event< MaxWaiters >
 
class  tsm::cancellation_token< MaxWaiters >
 Read-only cancellation capability for cooperative tasks. More...
 
class  tsm::cancellation_token< MaxWaiters >::wait_awaitable
 
class  tsm::cancellation_source< MaxWaiters >
 
class  tsm::signal< T, MaxWaiters >
 
class  tsm::signal< T, MaxWaiters >::wait_awaitable
 
class  tsm::runtime::sender< T >
 
class  tsm::runtime::receiver< T >
 
class  tsm::runtime::latest_reader< T >
 
class  tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >
 
class  tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::send_awaitable< Value >
 
class  tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::receive_awaitable
 
class  tsm::mutex< T, MaxWaiters >
 
class  tsm::mutex< T, MaxWaiters >::lock_awaitable
 

Namespaces

 tsm
 
 tsm::runtime
 
 tsm::runtime::detail
 

Typedefs

template<std::size_t MaxWaiters = 4U>
using tsm::os_event = irq_event< MaxWaiters >
 
template<typename T , std::size_t Capacity, typename Overflow = overflow::reject_newest, std::size_t MaxWaiters = 4U>
using tsm::channel = runtime::channel< T, Capacity, Overflow, MaxWaiters >
 

Detailed Description

Cooperative synchronization primitives for static tsm tasks.

These primitives are for coroutine tasks running under a tsm executor. They never block an OS thread and never allocate. Waiting tasks are represented by their task_context; signaling a primitive wakes those tasks through the scheduler ready queue.