VSF Documented
vsf_thread.h File Reference
#include "kernel/vsf_kernel_cfg.h"
#include "../vsf_eda.h"
#include "./vsf_task.h"
#include "utilities/ooc_class.h"

Go to the source code of this file.

Macros

#define VSF_KERNEL_CFG_THREAD_STACK_PAGE_SIZE   1
 
#define VSF_KERNEL_CFG_THREAD_STACK_GUARDIAN_SIZE   0
 
#define VSF_KERNEL_CFG_THREAD_STACK_ALIGN_BIT   3
 
#define __VSF_THREAD_STACK_SAFE_SIZE(__stack)
 
#define __declare_vsf_thread(__name)
 
#define declare_vsf_thread(__name)
 
#define declare_vsf_thread_ex(__name)
 
#define dcl_vsf_thread(__name)
 
#define dcl_vsf_thread_ex(__name)
 
#define __vsf_thread_set_stack_canery(__thread, __task)
 
#define __vsf_thread_set_stack(__thread, __task, __stack_ptr, __stack_bytesize)
 
#define __vsf_thread_def_stack(__name, __bytesize)
 
#define __vsf_thread_def_stack_member(__name, __bytesize)
 
#define __vsf_thread_imp_stack(__name, __thread, __task)
 
#define __vsf_eda_call_thread_prepare_stack(__name, __thread)
 
#define __def_vsf_thread(__name, __stack_bytesize, ...)
 
#define __implement_vsf_thread(__name)
 
#define __vsf_eda_call_thread_prepare(__name, __thread_cb)
 
#define vsf_eda_call_thread_prepare(__name, __thread_cb)
 
#define vsf_eda_call_thread(__thread_cb)
 
#define __def_vsf_thread_ex(__name, ...)
 
#define __implement_vsf_thread_ex(__name)
 
#define __vsf_eda_call_thread_prepare_ex__( __name, __thread_cb, __stack, __stack_bytesize)
 
#define vsf_eda_call_thread_prepare_ex( __name, __thread_cb, __stack, __stack_bytesize)
 
#define vsf_eda_call_thread_ex(__thread_cb)
 
#define def_vsf_thread(__name, __stack_bytesize, ...)
 
#define define_vsf_thread(__name, __stack_bytesize, ...)
 
#define def_vsf_thread_ex(__name, ...)
 
#define define_vsf_thread_ex(__name, ...)
 
#define end_def_vsf_thread(...)
 
#define end_define_vsf_thread(...)
 
#define implement_vsf_thread(__name)
 
#define implement_vsf_thread_ex(__name)
 
#define imp_vsf_thread(__name)
 
#define imp_vsf_thread_ex(__name)
 
#define __init_vsf_thread(__name, __task, __pri)
 
#define __init_vsf_thread_ex(__name, __task, __pri, __stack, __stack_bytesize)
 
#define init_vsf_thread(__name, __task, __pri)
 
#define init_vsf_thread_ex(__name, __task, __pri, __stack, __stack_bytesize)
 
#define __vsf_thread(__name)
 
#define vsf_thread(__name)
 
#define vsf_thread_wfm   vsf_thread_wait_for_msg
 
#define vsf_thread_wfe   vsf_thread_wait_for_evt
 
#define vsf_thread_wfem   vsf_thread_wait_for_evt_msg
 
#define __vsf_thread_call_sub(__name, __target, ...)
 
#define vsf_thread_call_sub(__name, __target, ...)
 
#define vsf_thread_call_pt(__name, __target, ...)
 
#define vsf_thread_call_task(__name, __target, ...)
 
#define vsf_thread_delay_ms(__ms)
 
#define vsf_thread_delay_us(__us)
 
#define vsf_thread_sem_post(__sem)
 
#define vsf_thread_sem_pend(__sem, timeout)
 
#define vsf_thread_trig_set(__trig, ...)
 
#define vsf_thread_trig_reset(__trig)
 
#define vsf_thread_trig_pend(__trig, timeout)
 
#define vsf_thread_mutex_enter(__mtx, timeout)
 

Functions

 declare_class (vsf_thread_t) typedef void vsf_thread_sighandler_t(vsf_thread_t *thread
 
 declare_class (vsf_thread_cb_t) typedef void vsf_thread_entry_t(vsf_thread_cb_t *thread)
 

Variables

int sig
 

Macro Definition Documentation

◆ VSF_KERNEL_CFG_THREAD_STACK_PAGE_SIZE

#define VSF_KERNEL_CFG_THREAD_STACK_PAGE_SIZE   1

◆ VSF_KERNEL_CFG_THREAD_STACK_GUARDIAN_SIZE

#define VSF_KERNEL_CFG_THREAD_STACK_GUARDIAN_SIZE   0

◆ VSF_KERNEL_CFG_THREAD_STACK_ALIGN_BIT

#define VSF_KERNEL_CFG_THREAD_STACK_ALIGN_BIT   3

◆ __VSF_THREAD_STACK_SAFE_SIZE

#define __VSF_THREAD_STACK_SAFE_SIZE ( __stack)
Value:
( ( ( ((__stack) + VSF_KERNEL_CFG_THREAD_STACK_PAGE_SIZE - 1) \
#define VSF_KERNEL_CFG_THREAD_STACK_PAGE_SIZE
Definition vsf_thread.h:49
#define VSF_KERNEL_CFG_THREAD_STACK_GUARDIAN_SIZE
Definition vsf_thread.h:52

◆ __declare_vsf_thread

#define __declare_vsf_thread ( __name)
Value:
typedef struct __name __name; \
typedef struct thread_cb_##__name##_t thread_cb_##__name##_t;
#define __name
Definition hci_transport_aic8800.c:555

◆ declare_vsf_thread

#define declare_vsf_thread ( __name)
Value:
#define __declare_vsf_thread(__name)
Definition vsf_thread.h:84

◆ declare_vsf_thread_ex

#define declare_vsf_thread_ex ( __name)

◆ dcl_vsf_thread

#define dcl_vsf_thread ( __name)
Value:
#define declare_vsf_thread(__name)
Definition vsf_thread.h:87

◆ dcl_vsf_thread_ex

#define dcl_vsf_thread_ex ( __name)

◆ __vsf_thread_set_stack_canery

#define __vsf_thread_set_stack_canery ( __thread,
__task )
Value:
(__thread)->canary = 0xDEADBEEF;

◆ __vsf_thread_set_stack

#define __vsf_thread_set_stack ( __thread,
__task,
__stack_ptr,
__stack_bytesize )
Value:
(__thread)->use_as__vsf_thread_cb_t.stack = (__stack_ptr); \
(__thread)->use_as__vsf_thread_cb_t.stack_size = (__stack_bytesize);\
__vsf_thread_set_stack_canery(__thread, __task)

◆ __vsf_thread_def_stack

#define __vsf_thread_def_stack ( __name,
__bytesize )
Value:
typedef enum { \
vsf_thread##__name##_stack_bytesize = (__bytesize), \
};
#define vsf_thread(__name)
Definition vsf_thread.h:364

◆ __vsf_thread_def_stack_member

#define __vsf_thread_def_stack_member ( __name,
__bytesize )

◆ __vsf_thread_imp_stack

#define __vsf_thread_imp_stack ( __name,
__thread,
__task )
Value:
__vsf_thread_set_stack((__thread), (__task), NULL, (vsf_thread##__name##_stack_bytesize))
#define NULL
Definition lvgl.h:26
#define __vsf_thread_set_stack(__thread, __task, __stack_ptr, __stack_bytesize)
Definition vsf_thread.h:102

◆ __vsf_eda_call_thread_prepare_stack

#define __vsf_eda_call_thread_prepare_stack ( __name,
__thread )
Value:
.stack = NULL, \
.stack_size = (vsf_thread##__name##_stack_bytesize),

◆ __def_vsf_thread

#define __def_vsf_thread ( __name,
__stack_bytesize,
... )
Value:
__vsf_thread_def_stack(__name, (__stack_bytesize)) \
struct thread_cb_##__name##_t { \
implement(vsf_thread_cb_t) \
__VA_ARGS__ \
__vsf_thread_def_stack_member(__name, (__stack_bytesize)) \
}; \
struct __name { \
implement(vsf_thread_t) \
implement_ex(thread_cb_##__name##_t, param) \
} VSF_CAL_ALIGN(8); \
extern void vsf_thread_##__name##_start(struct __name *task, \
vsf_prio_t priority); \
extern void vsf_thread_##__name##_entry( \
struct thread_cb_##__name##_t *vsf_pthis);
#define VSF_CAL_ALIGN(__N)
Definition __compiler.h:187
void _start(void)
Definition startup_CMSDK_ARMv8MBL.c:62
vsf_prio_t
Definition vsf_kernel_common.h:37
#define __vsf_thread_def_stack(__name, __bytesize)
Definition vsf_thread.h:114

◆ __implement_vsf_thread

#define __implement_vsf_thread ( __name)
Value:
void vsf_thread_##__name##_entry( \
struct thread_cb_##__name##_t *vsf_pthis); \
void vsf_thread_##__name##_start( struct __name *task, \
vsf_prio_t priority) \
{ \
VSF_KERNEL_ASSERT(NULL != task); \
thread_cb_##__name##_t *__vsf_pthis = &(task->param); \
__vsf_pthis->use_as__vsf_thread_cb_t.entry = (vsf_thread_entry_t *)\
&vsf_thread_##__name##_entry; \
__vsf_thread_imp_stack(__name, __vsf_pthis, task) \
vsf_thread_start( &(task->use_as__vsf_thread_t), \
&(__vsf_pthis->use_as__vsf_thread_cb_t), \
priority); \
} \
void vsf_thread_##__name##_entry( \
struct thread_cb_##__name##_t *vsf_pthis)

◆ __vsf_eda_call_thread_prepare

#define __vsf_eda_call_thread_prepare ( __name,
__thread_cb )
Value:
do { \
thread_cb_##__name##_t *__vsf_pthis = (__thread_cb); \
const vsf_thread_prepare_cfg_t cfg = { \
.entry = (vsf_thread_entry_t *) \
&vsf_thread_##__name##_entry, \
}; \
vk_eda_call_thread_prepare(&(__vsf_pthis->use_as__vsf_thread_cb_t),\
(vsf_thread_prepare_cfg_t *)&cfg);\
} while(0)
#define __vsf_eda_call_thread_prepare_stack(__name, __thread)
Definition vsf_thread.h:121

◆ vsf_eda_call_thread_prepare

#define vsf_eda_call_thread_prepare ( __name,
__thread_cb )
Value:
#define __vsf_eda_call_thread_prepare(__name, __thread_cb)
Definition vsf_thread.h:172

◆ vsf_eda_call_thread

#define vsf_eda_call_thread ( __thread_cb)
Value:
vk_eda_call_thread(&((__thread_cb)->use_as__vsf_thread_cb_t))
vsf_err_t vk_eda_call_thread(vsf_thread_cb_t *thread_cb)
Definition vsf_thread.c:561

◆ __def_vsf_thread_ex

#define __def_vsf_thread_ex ( __name,
... )
Value:
struct thread_cb_##__name##_t { \
implement(vsf_thread_cb_t) \
__VA_ARGS__ \
}; \
struct __name { \
implement(vsf_thread_t) \
implement_ex(thread_cb_##__name##_t, param) \
}; \
extern void vsf_thread_##__name##_start( struct __name *task, \
vsf_prio_t priority, \
void *stack, \
extern void vsf_thread_##__name##_entry( \
struct thread_cb_##__name##_t *vsf_pthis);
unsigned int uint_fast32_t
Definition stdint.h:27
uint32_t size
Definition vsf_memfs.h:50

◆ __implement_vsf_thread_ex

#define __implement_vsf_thread_ex ( __name)
Value:
void vsf_thread_##__name##_entry( \
struct thread_cb_##__name##_t *vsf_pthis); \
void vsf_thread_##__name##_start( struct __name *task, \
vsf_prio_t priority, \
void *stack, \
{ \
VSF_KERNEL_ASSERT(NULL != task && 0 != size && NULL != stack); \
thread_cb_##__name##_t *__vsf_pthis = &(task->param); \
__vsf_pthis->use_as__vsf_thread_cb_t.entry = (vsf_thread_entry_t *)\
&vsf_thread_##__name##_entry; \
__vsf_pthis->use_as__vsf_thread_cb_t.stack = stack; \
__vsf_pthis->use_as__vsf_thread_cb_t.stack_size = size; \
vsf_thread_start( &(task->use_as__vsf_thread_t), \
&(task->param.use_as__vsf_thread_cb_t), \
priority); \
} \
void vsf_thread_##__name##_entry( \
struct thread_cb_##__name##_t *vsf_pthis)

◆ __vsf_eda_call_thread_prepare_ex__

#define __vsf_eda_call_thread_prepare_ex__ ( __name,
__thread_cb,
__stack,
__stack_bytesize )
Value:
do { \
VSF_KERNEL_ASSERT((NULL != (__stack)) && (0 != (__size))) \
thread_cb_##__name##_t *__vsf_pthis = (__thread_cb); \
const vsf_thread_prepare_cfg_t cfg = { \
.entry = (vsf_thread_entry_t *) \
&vsf_thread_##__name##_entry, \
.stack = (__stack), \
.stack_size = (__stack_bytesize), \
}; \
vk_eda_call_thread_prepare(&(__vsf_pthis->use_as__vsf_thread_cb_t),\
(vsf_thread_prepare_cfg_t *)&cfg);\
} while(0)

◆ vsf_eda_call_thread_prepare_ex

#define vsf_eda_call_thread_prepare_ex ( __name,
__thread_cb,
__stack,
__stack_bytesize )
Value:
(__thread_cb), \
(__stack), \
(__stack_bytesize))
#define __vsf_eda_call_thread_prepare_ex__( __name, __thread_cb, __stack, __stack_bytesize)
Definition vsf_thread.h:229

◆ vsf_eda_call_thread_ex

#define vsf_eda_call_thread_ex ( __thread_cb)
Value:
vk_eda_call_thread(&((__thread_cb)->use_as__vsf_thread_cb_t))

◆ def_vsf_thread

#define def_vsf_thread ( __name,
__stack_bytesize,
... )
Value:
__def_vsf_thread(__name, (__stack_bytesize), __VA_ARGS__)
#define __def_vsf_thread(__name, __stack_bytesize,...)
Definition vsf_thread.h:138

◆ define_vsf_thread

#define define_vsf_thread ( __name,
__stack_bytesize,
... )
Value:
def_vsf_thread(__name, (__stack_bytesize), __VA_ARGS__)
#define def_vsf_thread(__name, __stack_bytesize,...)
Definition vsf_thread.h:329

◆ def_vsf_thread_ex

#define def_vsf_thread_ex ( __name,
... )
Value:
#define __def_vsf_thread_ex(__name,...)
Definition vsf_thread.h:191

◆ define_vsf_thread_ex

#define define_vsf_thread_ex ( __name,
... )
Value:
def_vsf_thread_ex(__name, __VA_ARGS__)
#define def_vsf_thread_ex(__name,...)
Definition vsf_thread.h:335

◆ end_def_vsf_thread

#define end_def_vsf_thread ( ...)

◆ end_define_vsf_thread

#define end_define_vsf_thread ( ...)

◆ implement_vsf_thread

#define implement_vsf_thread ( __name)
Value:
#define __implement_vsf_thread(__name)
Definition vsf_thread.h:154

◆ implement_vsf_thread_ex

#define implement_vsf_thread_ex ( __name)
Value:
#define __implement_vsf_thread_ex(__name)
Definition vsf_thread.h:208

◆ imp_vsf_thread

#define imp_vsf_thread ( __name)
Value:
#define implement_vsf_thread(__name)
Definition vsf_thread.h:344

◆ imp_vsf_thread_ex

#define imp_vsf_thread_ex ( __name)
Value:
#define implement_vsf_thread_ex(__name)
Definition vsf_thread.h:345

◆ __init_vsf_thread

#define __init_vsf_thread ( __name,
__task,
__pri )
Value:
vsf_thread_##__name##_start((__task), (__pri))

◆ __init_vsf_thread_ex

#define __init_vsf_thread_ex ( __name,
__task,
__pri,
__stack,
__stack_bytesize )
Value:
vsf_thread_##__name##_start((__task), (__pri), (__stack), (__stack_bytesize))

◆ init_vsf_thread

#define init_vsf_thread ( __name,
__task,
__pri )
Value:
__init_vsf_thread(__name, (__task), (__pri))
#define __init_vsf_thread(__name, __task, __pri)
Definition vsf_thread.h:350

◆ init_vsf_thread_ex

#define init_vsf_thread_ex ( __name,
__task,
__pri,
__stack,
__stack_bytesize )
Value:
__init_vsf_thread_ex(__name, (__task), (__pri), (__stack), (__stack_bytesize))
#define __init_vsf_thread_ex(__name, __task, __pri, __stack, __stack_bytesize)
Definition vsf_thread.h:353

◆ __vsf_thread

#define __vsf_thread ( __name)
Value:
thread_cb_##__name##_t

◆ vsf_thread

#define vsf_thread ( __name)
Value:
#define __vsf_thread(__name)
Definition vsf_thread.h:363

◆ vsf_thread_wfm

#define vsf_thread_wfm   vsf_thread_wait_for_msg

◆ vsf_thread_wfe

#define vsf_thread_wfe   vsf_thread_wait_for_evt

◆ vsf_thread_wfem

#define vsf_thread_wfem   vsf_thread_wait_for_evt_msg

◆ __vsf_thread_call_sub

#define __vsf_thread_call_sub ( __name,
__target,
... )
Value:
(uintptr_t)(__target), \
(0, ##__VA_ARGS__), \
0, \
0)
uint32_t uintptr_t
Definition stdint.h:38
vsf_err_t vk_thread_call_eda(uintptr_t eda_handler, uintptr_t param, size_t local_size, size_t local_buff_size, uintptr_t local_buff)
Definition vsf_thread.c:672

◆ vsf_thread_call_sub

#define vsf_thread_call_sub ( __name,
__target,
... )
Value:
__vsf_thread_call_sub(__name, (__target), (0, ##__VA_ARGS__))
#define __vsf_thread_call_sub(__name, __target,...)
Definition vsf_thread.h:377

◆ vsf_thread_call_pt

#define vsf_thread_call_pt ( __name,
__target,
... )
Value:
(__target)->fsm_state = 0; \
vsf_thread_call_sub(vsf_pt_func(__name), (__target), (0, ##__VA_ARGS__))
#define vsf_pt_func(__name)
Definition vsf_pt.h:180

◆ vsf_thread_call_task

#define vsf_thread_call_task ( __name,
__target,
... )
Value:
vk_thread_call_task(vsf_task_func(__name), __target, (0, ##__VA_ARGS__))
#define vsf_task_func(__name)
Definition vsf_task.h:40
fsm_rt_t vk_thread_call_task(vsf_task_entry_t task_handler, uintptr_t param, size_t local_size)
Definition vsf_thread.c:711

◆ vsf_thread_delay_ms

#define vsf_thread_delay_ms ( __ms)
Value:
vsf_systimer_tick_t vsf_systimer_ms_to_tick(uint_fast32_t time_ms)
Definition linux_generic.c:440
void vsf_thread_delay(vsf_systimer_tick_t tick)
Definition vsf_thread.c:770

◆ vsf_thread_delay_us

#define vsf_thread_delay_us ( __us)
Value:
vsf_systimer_tick_t vsf_systimer_us_to_tick(uint_fast32_t time_us)
Definition linux_generic.c:435

◆ vsf_thread_sem_post

#define vsf_thread_sem_post ( __sem)
Value:
#define vsf_eda_sem_post(__psem)
Definition vsf_eda.h:74

◆ vsf_thread_sem_pend

#define vsf_thread_sem_pend ( __sem,
timeout )
Value:
__le16 timeout
Definition ieee80211.h:94
vsf_sync_reason_t __vsf_thread_wait_for_sync(vsf_sync_t *sync, vsf_timeout_tick_t time_out)
Definition vsf_thread.c:832

◆ vsf_thread_trig_set

#define vsf_thread_trig_set ( __trig,
... )
Value:
vsf_eda_trig_set(__trig, ##__VA_ARGS__)
#define vsf_eda_trig_set(__pevt,...)
Definition vsf_eda.h:129

◆ vsf_thread_trig_reset

#define vsf_thread_trig_reset ( __trig)
Value:
#define vsf_eda_trig_reset(__pevt)
Definition vsf_eda.h:132

◆ vsf_thread_trig_pend

#define vsf_thread_trig_pend ( __trig,
timeout )

◆ vsf_thread_mutex_enter

#define vsf_thread_mutex_enter ( __mtx,
timeout )
Value:
__vsf_thread_wait_for_sync(&(__mtx)->use_as__vsf_sync_t, timeout)

Function Documentation

◆ declare_class() [1/2]

declare_class ( vsf_thread_t )

◆ declare_class() [2/2]

declare_class ( vsf_thread_cb_t )

Variable Documentation

◆ sig

int sig
Generated from commit: vsfteam/vsf@ceb53fd