15#ifndef MRBC_SRC_RRT0_H_
16#define MRBC_SRC_RRT0_H_
66#define MRBC_WAIT_FOREVER UINT32_MAX
68#if !defined(MRBC_TASK_NAME_LEN)
69#define MRBC_TASK_NAME_LEN 15
83#if defined(MRBC_DEBUG)
119#define MRBC_MUTEX_INITIALIZER { 0 }
145void mrbc_init(
void *heap_ptr,
unsigned int size);
156#if defined(MRBC_TASK_SCHEDULER_HOOK)
168void mrbc_task_set_scheduler_hook(
void (*fn)(
void *ud),
void *ud);
struct RInstance mrbc_instance
Instance object.
void mrbc_join_task(mrbc_tcb *tcb, const mrbc_tcb *tcb_join)
void mrbc_set_task_name(mrbc_tcb *tcb, const char *name)
void mrbc_task_q_insert(mrbc_tcb *p_tcb)
void mrbc_init(void *heap_ptr, unsigned int size)
void mrbc_terminate_task(mrbc_tcb *tcb)
mrbc_tcb * mrbc_task_q_waiting_head(void)
void mrbc_resume_task(mrbc_tcb *tcb)
int mrbc_mutex_unlock(mrbc_mutex *mutex, mrbc_tcb *tcb)
mrbc_tcb * mrbc_tcb_new(int regs_size, enum MrbcTaskState task_state, int priority)
mrbc_tcb * mrbc_find_task(const char *name)
mrbc_tcb * mrbc_create_task(const void *byte_code, mrbc_tcb *tcb)
mrbc_mutex * mrbc_mutex_init(mrbc_mutex *mutex)
void mrbc_change_priority(mrbc_tcb *tcb, int priority)
uint32_t mrbc_deadline_after_ms(mrbc_int_t ms, int *p_overflow)
void mrbc_sleep_ms(mrbc_tcb *tcb, uint32_t ms)
int mrbc_mutex_trylock(mrbc_mutex *mutex, mrbc_tcb *tcb)
int mrbc_deadline_reached(uint32_t deadline)
int mrbc_mutex_lock(mrbc_mutex *mutex, mrbc_tcb *tcb)
void mrbc_register_wakeup(uint32_t wakeup_tick)
void mrbc_suspend_task(mrbc_tcb *tcb)
void mrbc_relinquish(mrbc_tcb *tcb)
int mrbc_start_task(mrbc_tcb *tcb)
void mrbc_task_q_delete(mrbc_tcb *p_tcb)
int mrbc_delete_task(mrbc_tcb *tcb)
struct RTcb mrbc_tcb
Task control block.
@ TASKSTATE_SUSPENDED
Suspended.
@ TASKSTATE_WAITING
Waiting.
@ TASKSTATE_RUNNING
Running.
@ TASKSTATE_DORMANT
Domant.
static const int MRBC_TASK_DEFAULT_STATE
struct RMutex mrbc_mutex
Mutex.
static mrbc_tcb * mrbc_get_tcb(const mrbc_vm *vm)
#define MRBC_TASK_NAME_LEN
static const int MRBC_TASK_DEFAULT_PRIORITY
uint8_t priority
task priority. initial value.
void * target
Task::Queue instance waited on (TASKREASON_QUEUE).
char name[MRBC_TASK_NAME_LEN+1]
task name (optional)
const struct RTcb * tcb_join
joined task.
uint8_t priority_preemption
task priority. effective value.
uint8_t state
task state. defined in MrbcTaskState.
mrbc_instance * task_instance
Task instance or NULL.
volatile uint8_t timeslice
time slice counter.
uint8_t reason
sub state. defined in MrbcTaskReason.
uint32_t wakeup_tick
wakeup time for sleep state.
struct RTcb::@363107132000246361337323266072372261072345062300::@123367244141214366021077021374060365005063270262 queue
queue wait state (TASKREASON_QUEUE).
struct RTcb * next
daisy chain in task queue.
struct VM mrbc_vm
Virtual Machine.
Global configuration of mruby/c VM's.