x86: implements arch_thread_priv_stack_space_get
This implements arch_thread_priv_stack_space_get() so this can be used to figure out how much privileged stack space is used. Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
parent
fb0babacee
commit
d736af8d26
2 changed files with 19 additions and 0 deletions
|
|
@ -95,6 +95,7 @@ config X86
|
|||
&& !SOC_HAS_TIMING_FUNCTIONS
|
||||
select ARCH_HAS_STACK_CANARIES_TLS
|
||||
select ARCH_SUPPORTS_MEM_MAPPED_STACKS if X86_MMU && !DEMAND_PAGING
|
||||
select ARCH_HAS_THREAD_PRIV_STACK_SPACE_GET if USERSPACE
|
||||
help
|
||||
x86 architecture
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/sys/speculation.h>
|
||||
#include <zephyr/internal/syscall_handler.h>
|
||||
|
|
@ -183,3 +185,19 @@ FUNC_NORETURN void arch_user_mode_enter(k_thread_entry_t user_entry,
|
|||
_current->stack_info.start);
|
||||
CODE_UNREACHABLE;
|
||||
}
|
||||
|
||||
int arch_thread_priv_stack_space_get(const struct k_thread *thread, size_t *stack_size,
|
||||
size_t *unused_ptr)
|
||||
{
|
||||
struct z_x86_thread_stack_header *hdr_stack_obj;
|
||||
|
||||
if ((thread->base.user_options & K_USER) != K_USER) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
hdr_stack_obj = (struct z_x86_thread_stack_header *)thread->stack_obj;
|
||||
|
||||
return z_stack_space_get(&hdr_stack_obj->privilege_stack[0],
|
||||
sizeof(hdr_stack_obj->privilege_stack),
|
||||
unused_ptr);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue