Browse Source

kernel: dynamic: declare dynamic stubs when disabled

With some of the recent work to disable unnecessary system
calls, there is a scenario where `z_impl_k_thread_stack_free()`
is not defined and an undefined symbol error occurs.

Safety was very concerned that dynamic thread stack code might
touch other code that does not malloc, so add a separate file
for the stack alloc and free stubs.

Signed-off-by: Christopher Friedt <cfriedt@meta.com>
pull/60756/head
Christopher Friedt 2 years ago committed by Chris Friedt
parent
commit
d7119b889f
  1. 1
      include/zephyr/kernel.h
  2. 10
      kernel/CMakeLists.txt
  3. 25
      kernel/dynamic_disabled.c

1
include/zephyr/kernel.h

@ -289,6 +289,7 @@ __syscall k_thread_stack_t *k_thread_stack_alloc(size_t size, int flags);
* @retval 0 on success. * @retval 0 on success.
* @retval -EBUSY if the thread stack is in use. * @retval -EBUSY if the thread stack is in use.
* @retval -EINVAL if @p stack is invalid. * @retval -EINVAL if @p stack is invalid.
* @retval -ENOSYS if dynamic thread stack allocation is disabled
* *
* @see CONFIG_DYNAMIC_THREAD * @see CONFIG_DYNAMIC_THREAD
*/ */

10
kernel/CMakeLists.txt

@ -123,11 +123,11 @@ target_sources_ifdef(
userspace.c userspace.c
) )
target_sources_ifdef( if(${CONFIG_DYNAMIC_THREAD})
CONFIG_DYNAMIC_THREAD target_sources(kernel PRIVATE dynamic.c)
kernel PRIVATE else()
dynamic.c target_sources(kernel PRIVATE dynamic_disabled.c)
) endif()
target_include_directories(kernel PRIVATE target_include_directories(kernel PRIVATE
${ZEPHYR_BASE}/kernel/include ${ZEPHYR_BASE}/kernel/include

25
kernel/dynamic_disabled.c

@ -0,0 +1,25 @@
/*
* Copyright (c) 2022, Meta
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <errno.h>
#include <zephyr/kernel.h>
#include <zephyr/kernel/thread_stack.h>
k_thread_stack_t *z_impl_k_thread_stack_alloc(size_t size, int flags)
{
ARG_UNUSED(size);
ARG_UNUSED(flags);
return NULL;
}
int z_impl_k_thread_stack_free(k_thread_stack_t *stack)
{
ARG_UNUSED(stack);
return -ENOSYS;
}
Loading…
Cancel
Save