arch: common: Fix up_check_tcbstack() for CONFIG_ARCH_ADDRENV=y
Summary: - I noticed that ps shows incorrect stack usage when running getprime in the background. - With CONFIG_ARCH_ADDRENV=y, a user task including pthread allocates its stack in the user space that needs to be accessed with a correct address environment. - This commit fixes this issue. Impact: - CONFIG_ARCH_ADDRENV=y only Testing: - Tested with sabre-6quad:knsh on qemu-6.2 Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
parent
e0291b1ce8
commit
8e7752c7da
@ -199,7 +199,29 @@ void arm_stack_color(void *stackbase, size_t nbytes)
|
||||
|
||||
size_t up_check_tcbstack(struct tcb_s *tcb)
|
||||
{
|
||||
return arm_stack_check(tcb->stack_base_ptr, tcb->adj_stack_size);
|
||||
size_t size;
|
||||
|
||||
#ifdef CONFIG_ARCH_ADDRENV
|
||||
save_addrenv_t oldenv;
|
||||
bool saved = false;
|
||||
|
||||
if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL)
|
||||
{
|
||||
up_addrenv_select(&tcb->group->tg_addrenv, &oldenv);
|
||||
saved = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
size = arm_stack_check(tcb->stack_base_ptr, tcb->adj_stack_size);
|
||||
|
||||
#ifdef CONFIG_ARCH_ADDRENV
|
||||
if (saved)
|
||||
{
|
||||
up_addrenv_restore(&oldenv);
|
||||
}
|
||||
#endif
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
ssize_t up_check_tcbstack_remain(struct tcb_s *tcb)
|
||||
|
Loading…
Reference in New Issue
Block a user