16#include "pw_async/dispatcher.h"
17#include "pw_async/task.h"
18#include "pw_sync/interrupt_spin_lock.h"
19#include "pw_sync/lock_annotations.h"
20#include "pw_sync/timed_thread_notification.h"
21#include "pw_thread/thread_core.h"
38 void RunUntil(chrono::SystemClock::time_point end_time);
58 void PostAt(
Task& task, chrono::SystemClock::time_point time) override;
62 chrono::SystemClock::time_point
now()
override {
77 void PostTaskInternal(backend::NativeTask& task,
78 chrono::SystemClock::time_point time_due)
87 void MaybeSleepUntil(std::optional<chrono::SystemClock::time_point> wake_time)
97 sync::InterruptSpinLock lock_;
98 sync::TimedThreadNotification timed_notification_;
BasicDispatcher is a generic implementation of Dispatcher.
Definition: dispatcher.h:28
Definition: dispatcher.h:48
Definition: intrusive_list.h:88
void RunUntilIdle()
Execute all runnable tasks and return without waiting.
void RunUntil(chrono::SystemClock::time_point end_time)
virtual void ExecuteTask(backend::NativeTask &task, Status status)
chrono::SystemClock::time_point now() override
Returns the current time.
Definition: dispatcher.h:62
void PostAt(Task &task, chrono::SystemClock::time_point time) override
void RunFor(chrono::SystemClock::duration duration)
bool Cancel(Task &task) override
static time_point now() noexcept
This is thread and IRQ safe. This must be provided by the backend.
Definition: system_clock.h:117
std::chrono::duration< rep, period > duration
Alias for durations representable with this clock.
Definition: system_clock.h:90
#define PW_GUARDED_BY(x)
Definition: lock_annotations.h:60
#define PW_EXCLUSIVE_LOCKS_REQUIRED(...)
Definition: lock_annotations.h:146
#define PW_LOCKS_EXCLUDED(...)
Definition: lock_annotations.h:176
(Deprecated) Async library
Definition: context.h:19