unified: Add legacy DEFINE_TASK support
Allows unified kernel to support legacy microkernel applications that use private tasks. Also renames the unified kernel macro for defining a thread to be consistent with the naming used for defining other kernel objects. Change-Id: I667d87056138c45c291dd848344e4051bf9fd1ff Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
This commit is contained in:
parent
0cdcc6c08c
commit
ea6cfd1d83
3 changed files with 13 additions and 10 deletions
|
@ -177,7 +177,7 @@ struct _static_thread_data {
|
|||
{ \
|
||||
.init_groups = (groups), \
|
||||
.init_prio = (prio), \
|
||||
.init_entry = entry, \
|
||||
.init_entry = (void (*)(void *, void *, void *))entry, \
|
||||
.init_p1 = (void *)p1, \
|
||||
.init_p2 = (void *)p2, \
|
||||
.init_p3 = (void *)p3, \
|
||||
|
@ -194,22 +194,15 @@ struct _static_thread_data {
|
|||
* this 32-bit alignment in specified here.
|
||||
* _static_thread_data structure sise needs to be kept 32-bit aligned as well
|
||||
*/
|
||||
#define K_THREAD_OBJ_DEFINE(name, stack_size, \
|
||||
#define K_THREAD_DEFINE(name, stack_size, \
|
||||
entry, p1, p2, p3, \
|
||||
abort, prio, groups) \
|
||||
extern void entry(void *, void *, void *); \
|
||||
char __noinit __stack _k_thread_obj_##name[stack_size]; \
|
||||
struct _static_thread_data _k_thread_data_##name __aligned(4) \
|
||||
__in_section(_k_task_list, private, task) = \
|
||||
K_THREAD_INITIALIZER(_k_thread_obj_##name, stack_size, \
|
||||
entry, p1, p2, p3, abort, prio, groups)
|
||||
|
||||
#define K_THREAD_DEFINE(name, stack_size, entry, p1, p2, p3, \
|
||||
abort, prio, groups) \
|
||||
K_THREAD_OBJ_DEFINE(name, stack_size, entry, p1, p2, p3, \
|
||||
abort, prio, groups); \
|
||||
k_tid_t const name = (k_tid_t)_k_thread_obj_##name
|
||||
|
||||
/* extern int k_thread_prio_get(k_tid_t thread); in sched.h */
|
||||
extern void k_thread_priority_set(k_tid_t thread, int prio);
|
||||
|
||||
|
|
|
@ -79,6 +79,16 @@ static inline int _error_to_rc_no_timeout(int err)
|
|||
typedef void (*nano_fiber_entry_t)(int i1, int i2);
|
||||
typedef int nano_context_type_t;
|
||||
|
||||
#define DEFINE_TASK(name, prio, entry, stack_size, groups) \
|
||||
extern void entry(void); \
|
||||
char __noinit __stack _k_thread_obj_##name[stack_size]; \
|
||||
struct _static_thread_data _k_thread_data_##name __aligned(4) \
|
||||
__in_section(_k_task_list, private, task) = \
|
||||
K_THREAD_INITIALIZER(_k_thread_obj_##name, stack_size, \
|
||||
entry, NULL, NULL, NULL, \
|
||||
NULL, prio, (uint32_t)(groups)); \
|
||||
k_tid_t const name = (k_tid_t)_k_thread_obj_##name
|
||||
|
||||
#define sys_thread_self_get k_current_get
|
||||
#define sys_thread_busy_wait k_busy_wait
|
||||
|
||||
|
|
|
@ -448,7 +448,7 @@ def kernel_main_c_tasks_unified():
|
|||
kernel_main_c_out("EXTERN_C void %s(void);\n" % abort)
|
||||
|
||||
kernel_main_c_out(
|
||||
"K_THREAD_OBJ_DEFINE(%s, %u, %s, %s, %s, %s, %s, %d, 0x%x);\n" %
|
||||
"K_THREAD_DEFINE(%s, %u, %s, %s, %s, %s, %s, %d, 0x%x);\n" %
|
||||
(name, int(stack_size), entry,
|
||||
params[0], params[1], params[2],
|
||||
abort, int(prio), int(groups)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue