7#include "pico/runtime.h"
10#ifndef TK_TICKS_PER_SEC
11#define TK_TICKS_PER_SEC 1000u
15#ifndef TK_TIME_SLICE_MS
16#define TK_TIME_SLICE_MS 10u
21#define TK_MAX_TASKS 32u
25#ifndef TK_DEFAULT_STACK_SIZE
26#define TK_DEFAULT_STACK_SIZE (4 * 1024)
99void exit(
int code = 0);
122void unlock(
bool was_enabled);
187#define TK_TASK(fn, prio) \
188 static void tk_register_##fn(void) { \
189 ::tk::detail::static_register(#fn, fn, (prio)); \
191 PICO_RUNTIME_INIT_FUNC(tk_register_##fn, "ZZ900");
~PreemptGuard()
Definition kernel.hpp:159
PreemptGuard(const PreemptGuard &)=delete
PreemptGuard()
Definition kernel.hpp:158
PreemptGuard & operator=(const PreemptGuard &)=delete
Definition kernel.hpp:167
void block_current_task_locked()
Definition scheduler.cpp:333
void static_register(const char *name, TaskFn fn, uint32_t prio)
Definition scheduler.cpp:188
uint32_t sched_lock()
Definition scheduler.cpp:325
uint8_t find_highest_prio_waiter(task_mask_t wait_mask)
Definition scheduler.cpp:355
uint8_t current_task_slot()
Definition scheduler.cpp:349
void sched_unlock(uint32_t save)
Definition scheduler.cpp:329
void wake_task_locked(TaskHandle handle)
Definition scheduler.cpp:340
void preempt_disable()
自コアのタスクスイッチ (プリエンプション) を一時的に禁止します
Definition scheduler.cpp:369
Prio
タスクの優先度レベル
Definition kernel.hpp:39
@ PRIO_NORMAL
通常優先度 (デフォルト)
Definition kernel.hpp:42
@ PRIO_HIGH
高優先度
Definition kernel.hpp:41
@ PRIO_REALTIME
リアルタイム最優先
Definition kernel.hpp:40
@ PRIO_LOW
低優先度
Definition kernel.hpp:43
uint64_t now_ms()
システム起動時からの経過時間をミリ秒単位で取得します
Definition scheduler.cpp:312
bool lock()
ハードウェアスピンロックと全割り込み禁止によるクリティカルセクションに入ります
Definition scheduler.cpp:316
void start()
tinykernel スケジューラを起動します
Definition scheduler.cpp:247
TaskHandle create(TaskFn fn, void *arg=nullptr, uint32_t prio=PRIO_NORMAL)
タスクを生成・登録します
Definition scheduler.cpp:204
void preempt_enable()
自コアのタスクスイッチ (プリエンプション) を再開します
Definition scheduler.cpp:376
void unlock(bool was_enabled)
tk::lock() で入ったクリティカルセクションを抜けます
Definition scheduler.cpp:321
void yield()
現在実行中のタスクを一時中断し、同優先度の他のタスクへ CPU を譲渡します
Definition scheduler.cpp:276
void(*)(void *arg) TaskFn
Definition kernel.hpp:32
void sleep_ms(uint32_t ms)
現在のタスクを指定時間スリープさせます
Definition scheduler.cpp:284
void exit(int code=0)
現在のタスクを終了・破棄します
Definition scheduler.cpp:298
uint32_t task_mask_t
Definition kernel.hpp:165
タスクの識別ハンドル
Definition kernel.hpp:49
uint8_t slot
タスクスロット番号 (0xFF は無効/失敗)
Definition kernel.hpp:50
bool is_valid() const
Definition kernel.hpp:53