kernel: demote K_THREAD_STACK_BUFFER() to private

This macro is slated for complete removal, as it's not possible
on arches with an MPU stack guard to know the true buffer bounds
without also knowing the runtime state of its associated thread.

As removing this completely would be invasive to where we are
in the 1.14 release, demote to a private kernel Z_ API instead.
The current way that the macro is being used internally will
not cause any undue harm, we just don't want any external code
depending on it.

The final work to remove this (and overhaul stack specification in
general) will take place in 1.15 in the context of #14269

Fixes: #14766

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie
2019-04-04 12:05:28 -07:00
committed by Anas Nashif
parent b379030724
commit 4e5c093e66
29 changed files with 50 additions and 51 deletions

View File

@@ -67,7 +67,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
void *parameter1, void *parameter2, void *parameter3,
int priority, unsigned int options)
{
char *pStackMem = K_THREAD_STACK_BUFFER(stack);
char *pStackMem = Z_THREAD_STACK_BUFFER(stack);
Z_ASSERT_VALID_PRIO(priority, pEntry);
char *stackEnd;

View File

@@ -55,7 +55,7 @@ static ALWAYS_INLINE void z_irq_setup(void)
z_arc_v2_aux_reg_write(_ARC_V2_AUX_IRQ_CTRL, aux_irq_ctrl_value);
_kernel.irq_stack =
K_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
Z_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
}
#endif /* _ASMLANGUAGE */

View File

@@ -55,7 +55,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
void *parameter1, void *parameter2, void *parameter3,
int priority, unsigned int options)
{
char *pStackMem = K_THREAD_STACK_BUFFER(stack);
char *pStackMem = Z_THREAD_STACK_BUFFER(stack);
char *stackEnd;
/* Offset between the top of stack and the high end of stack area. */
u32_t top_of_stack_offset = 0U;

View File

@@ -41,10 +41,10 @@ static ALWAYS_INLINE void z_InterruptStackSetup(void)
{
#if defined(CONFIG_MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT) && \
defined(CONFIG_USERSPACE)
u32_t msp = (u32_t)(K_THREAD_STACK_BUFFER(_interrupt_stack) +
u32_t msp = (u32_t)(Z_THREAD_STACK_BUFFER(_interrupt_stack) +
CONFIG_ISR_STACK_SIZE - MPU_GUARD_ALIGN_AND_SIZE);
#else
u32_t msp = (u32_t)(K_THREAD_STACK_BUFFER(_interrupt_stack) +
u32_t msp = (u32_t)(Z_THREAD_STACK_BUFFER(_interrupt_stack) +
CONFIG_ISR_STACK_SIZE);
#endif

View File

@@ -63,11 +63,11 @@ z_arch_switch_to_main_thread(struct k_thread *main_thread,
#if defined(CONFIG_MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT) && \
defined(CONFIG_USERSPACE)
start_of_main_stack =
K_THREAD_STACK_BUFFER(main_stack) + main_stack_size -
Z_THREAD_STACK_BUFFER(main_stack) + main_stack_size -
MPU_GUARD_ALIGN_AND_SIZE;
#else
start_of_main_stack =
K_THREAD_STACK_BUFFER(main_stack) + main_stack_size;
Z_THREAD_STACK_BUFFER(main_stack) + main_stack_size;
#endif
start_of_main_stack = (void *)STACK_ROUND_DOWN(start_of_main_stack);

View File

@@ -36,7 +36,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
void *arg1, void *arg2, void *arg3,
int priority, unsigned int options)
{
char *stack_memory = K_THREAD_STACK_BUFFER(stack);
char *stack_memory = Z_THREAD_STACK_BUFFER(stack);
Z_ASSERT_VALID_PRIO(priority, thread_func);
struct init_stack_frame *iframe;

View File

@@ -32,7 +32,7 @@ void k_cpu_atomic_idle(unsigned int key);
static ALWAYS_INLINE void kernel_arch_init(void)
{
_kernel.irq_stack =
K_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
Z_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
}
static ALWAYS_INLINE void

View File

@@ -51,7 +51,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
int priority, unsigned int options)
{
char *stack_memory = K_THREAD_STACK_BUFFER(stack);
char *stack_memory = Z_THREAD_STACK_BUFFER(stack);
Z_ASSERT_VALID_PRIO(priority, thread_func);

View File

@@ -20,7 +20,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
void *arg1, void *arg2, void *arg3,
int priority, unsigned int options)
{
char *stack_memory = K_THREAD_STACK_BUFFER(stack);
char *stack_memory = Z_THREAD_STACK_BUFFER(stack);
Z_ASSERT_VALID_PRIO(priority, thread_func);
struct __esf *stack_init;

View File

@@ -28,7 +28,7 @@ void k_cpu_atomic_idle(unsigned int key);
static ALWAYS_INLINE void kernel_arch_init(void)
{
_kernel.irq_stack =
K_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
Z_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE;
}
static ALWAYS_INLINE void

View File

@@ -68,7 +68,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
struct _x86_initial_frame *initial_frame;
Z_ASSERT_VALID_PRIO(priority, entry);
stack_buf = K_THREAD_STACK_BUFFER(stack);
stack_buf = Z_THREAD_STACK_BUFFER(stack);
z_new_thread_init(thread, stack_buf, stack_size, priority, options);
#if CONFIG_X86_USERSPACE

View File

@@ -36,7 +36,7 @@ extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE);
static inline void kernel_arch_init(void)
{
_kernel.nested = 0;
_kernel.irq_stack = K_THREAD_STACK_BUFFER(_interrupt_stack) +
_kernel.irq_stack = Z_THREAD_STACK_BUFFER(_interrupt_stack) +
CONFIG_ISR_STACK_SIZE;
#if CONFIG_X86_STACK_PROTECTION
z_x86_mmu_set_flags(&z_x86_kernel_pdpt, _interrupt_stack, MMU_PAGE_SIZE,

View File

@@ -29,7 +29,7 @@ void z_new_thread(struct k_thread *t, k_thread_stack_t *stack,
void *args[] = { entry, p1, p2, p3 };
int nargs = 4;
int eflags = 0x200;
char *base = K_THREAD_STACK_BUFFER(stack);
char *base = Z_THREAD_STACK_BUFFER(stack);
char *top = base + sz;
z_new_thread_init(t, base, sz, prio, opts);

View File

@@ -48,7 +48,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
void *p1, void *p2, void *p3,
int priority, unsigned int options)
{
char *pStack = K_THREAD_STACK_BUFFER(stack);
char *pStack = Z_THREAD_STACK_BUFFER(stack);
/* Align stack end to maximum alignment requirement. */
char *stackEnd = (char *)ROUND_DOWN(pStack + stackSize, 16);

View File

@@ -63,7 +63,7 @@ void z_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t sz,
k_thread_entry_t entry, void *p1, void *p2, void *p3,
int prio, unsigned int opts)
{
char *base = K_THREAD_STACK_BUFFER(stack);
char *base = Z_THREAD_STACK_BUFFER(stack);
char *top = base + sz;
/* Align downward. The API as specified requires a runtime check. */

View File

@@ -70,7 +70,7 @@ static ALWAYS_INLINE void kernel_arch_init(void)
cpu0->nested = 0;
#if CONFIG_XTENSA_ASM2
cpu0->irq_stack = (K_THREAD_STACK_BUFFER(_interrupt_stack) +
cpu0->irq_stack = (Z_THREAD_STACK_BUFFER(_interrupt_stack) +
CONFIG_ISR_STACK_SIZE);
/* The asm2 scheme keeps the kernel pointer in MISC0 for easy
@@ -90,7 +90,7 @@ static ALWAYS_INLINE void kernel_arch_init(void)
#endif
#ifdef CONFIG_INIT_STACKS
memset(K_THREAD_STACK_BUFFER(_interrupt_stack), 0xAA,
memset(Z_THREAD_STACK_BUFFER(_interrupt_stack), 0xAA,
CONFIG_ISR_STACK_SIZE);
#endif
}

View File

@@ -502,7 +502,7 @@ static void cc1200_rx(struct device *dev)
}
net_analyze_stack("CC1200 Rx Fiber stack",
K_THREAD_STACK_BUFFER(cc1200->rx_stack),
Z_THREAD_STACK_BUFFER(cc1200->rx_stack),
K_THREAD_STACK_SIZEOF(cc1200->rx_stack));
continue;
flush:

View File

@@ -671,7 +671,7 @@ static void cc2520_rx(int arg)
}
net_analyze_stack("CC2520 Rx Fiber stack",
K_THREAD_STACK_BUFFER(cc2520->cc2520_rx_stack),
Z_THREAD_STACK_BUFFER(cc2520->cc2520_rx_stack),
K_THREAD_STACK_SIZEOF(cc2520->cc2520_rx_stack));
continue;
flush:

View File

@@ -579,7 +579,7 @@ static inline void mcr20a_rx(struct mcr20a_context *mcr20a, u8_t len)
}
net_analyze_stack("MCR20A Rx Fiber stack",
K_THREAD_STACK_BUFFER(mcr20a->mcr20a_rx_stack),
Z_THREAD_STACK_BUFFER(mcr20a->mcr20a_rx_stack),
K_THREAD_STACK_SIZEOF(mcr20a->mcr20a_rx_stack));
return;
out:

View File

@@ -121,7 +121,7 @@ static void nrf5_rx_thread(void *arg1, void *arg2, void *arg3)
if (CONFIG_IEEE802154_DRIVER_LOG_LEVEL >= LOG_LEVEL_DBG) {
net_analyze_stack(
"nRF5 rx stack",
K_THREAD_STACK_BUFFER(nrf5_radio->rx_stack),
Z_THREAD_STACK_BUFFER(nrf5_radio->rx_stack),
K_THREAD_STACK_SIZEOF(nrf5_radio->rx_stack));
}

Some files were not shown because too many files have changed in this diff Show More