Skip to content

Commit

Permalink
kernel: extract common code in K_{,KERNEL_}THREAD_DEFINE
Browse files Browse the repository at this point in the history
K_THREAD_DEFINE and K_KERNEL_THREAD_DEFINE have common code
so extract the common code and put them into another macro
Z_THREAD_COMMON_DEFINE().

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
  • Loading branch information
dcpleung authored and nashif committed May 25, 2023
1 parent 6281ec4 commit c369c88
Showing 1 changed file with 20 additions and 15 deletions.
35 changes: 20 additions & 15 deletions include/zephyr/kernel.h
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,22 @@ struct _static_thread_data {
.init_name = STRINGIFY(tname), \
}

/*
* Refer to K_THREAD_DEFINE() and K_KERNEL_THREAD_DEFINE() for
* information on arguments.
*/
#define Z_THREAD_COMMON_DEFINE(name, stack_size, \
entry, p1, p2, p3, \
prio, options, delay) \
struct k_thread _k_thread_obj_##name; \
STRUCT_SECTION_ITERABLE(_static_thread_data, \
_k_thread_data_##name) = \
Z_THREAD_INITIALIZER(&_k_thread_obj_##name, \
_k_thread_stack_##name, stack_size,\
entry, p1, p2, p3, prio, options, \
delay, name); \
const k_tid_t name = (k_tid_t)&_k_thread_obj_##name

/**
* INTERNAL_HIDDEN @endcond
*/
Expand Down Expand Up @@ -719,13 +735,8 @@ struct _static_thread_data {
entry, p1, p2, p3, \
prio, options, delay) \
K_THREAD_STACK_DEFINE(_k_thread_stack_##name, stack_size); \
struct k_thread _k_thread_obj_##name; \
STRUCT_SECTION_ITERABLE(_static_thread_data, _k_thread_data_##name) = \
Z_THREAD_INITIALIZER(&_k_thread_obj_##name, \
_k_thread_stack_##name, stack_size, \
entry, p1, p2, p3, prio, options, delay, \
name); \
const k_tid_t name = (k_tid_t)&_k_thread_obj_##name
Z_THREAD_COMMON_DEFINE(name, stack_size, entry, p1, p2, p3, \
prio, options, delay)

/**
* @brief Statically define and initialize a thread intended to run only in kernel mode.
Expand Down Expand Up @@ -761,14 +772,8 @@ struct _static_thread_data {
entry, p1, p2, p3, \
prio, options, delay) \
K_KERNEL_STACK_DEFINE(_k_thread_stack_##name, stack_size); \
struct k_thread _k_thread_obj_##name; \
STRUCT_SECTION_ITERABLE(_static_thread_data, \
_k_thread_data_##name) = \
Z_THREAD_INITIALIZER(&_k_thread_obj_##name, \
_k_thread_stack_##name, stack_size,\
entry, p1, p2, p3, prio, options, \
delay, name); \
const k_tid_t name = (k_tid_t)&_k_thread_obj_##name
Z_THREAD_COMMON_DEFINE(name, stack_size, entry, p1, p2, p3, \
prio, options, delay)

/**
* @brief Get a thread's priority.
Expand Down

0 comments on commit c369c88

Please sign in to comment.