HI,

I vote for option 3

My reason, apart what Andrzej mentioned (usefulness and debugging),
is that there is a notorious coverity warning popping up about usage of
address &t_tasktop[stack_size].

best regards
Jerzy

pon., 25 lis 2019 o 16:28 Andrzej Kaczmarek <andrzej.kaczma...@codecoup.pl>
napisał(a):

> Hi,
>
> I recently created a PR which adds support for hardware stack limit
> checking on Cortex-M33. It was already approved by few people but
> apparently there are different opinions of how this should be implemented
> so I would like to get more opinions on this since we likely will have more
> MCUs with this feature soon, so consider this as a voting.
>
> PR: https://github.com/apache/mynewt-core/pull/2108
>
> Here are proposed ways to do this:
> 1. use stack top and stack size to calculate PSPLIM on every context switch
> this does not require any modification in os_task structure and adds 4
> instructions on each context switch
> 2. add stack bottom to os_task
> this extends os_task struct by 4 bytes and adds 2 instructions on each
> context switch
> 3. change stack top to stack bottom in os_task
> this does not change the size of os_task struct and adds 2 instructions on
> each context switch, however it may break code which accesses os_task
> structure directly (like mcumgr does - it should be modified to use proper
> API anyway)
>
> My personal preference is option 3 since it is more useful to have stack
> bottom in os_task struct instead of stack top. For example, stack overflow
> or usage is determined using stack bottom. Also when debugging it's easier
> to inspect stack by using stack bottom rather than stack top. In general,
> seems like you only need stack top when initializing it but this is done
> only once (even os_task_init has 'stack_bottom' parameter, not
> 'stack_top').
>
> Best,
> Andrzej
>

Reply via email to