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)
|
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)
|
ssize_t up_check_tcbstack_remain(struct tcb_s *tcb)
|
||||||
|
Loading…
Reference in New Issue
Block a user