And the reason arm_usestack() fails to color the stack is because the
following check fails:

if (tcb->pid != 0)

During the task initialization, pid is still 0 so stack is not colored.



Στις Σάβ, 6 Φεβ 2021 στις 5:13 μ.μ., ο/η Fotis Panagiotopoulos <
f.j.pa...@gmail.com> έγραψε:

> Indeed I was expecting arm_usestack() to do the colorization, but
> apparently it doesn't.
>
> I cannot have my application code to colorize the stack, as a call to
> arm_stack_color() is needed. This is not exposed to the application as far
> as i can tell.
>
> > Also Assuming ARM it has to be 8 byte aligned. So you need attributes on
> > your variable called stack to set the alignment.
> Indeed I have actually aligned the stack, but didn't include it in the
> example code.
>
>
> Στις Σάβ, 6 Φεβ 2021 στις 4:49 μ.μ., ο/η David Sidrane <
> david.sidr...@nscdg.com> έγραψε:
>
>> You have to init the memory used for the stack:
>>
>> Have a look in the normal tasking init , and you will see the call out to
>> init the stack, that you neeed to call.
>>
>> Also Assuming ARM it has to be 8 byte aligned. So you need attributes on
>> your variable called stack to set the alignment.
>>
>> David
>> -----Original Message-----
>> From: Fotis Panagiotopoulos [mailto:f.j.pa...@gmail.com]
>> Sent: Saturday, February 06, 2021 6:08 AM
>> To: dev@nuttx.apache.org
>> Subject: Task with statically allocated stack
>>
>> Hi,
>>
>> I am trying to create a new task using a statically allocated stack.
>>
>> Here is my code:
>>
>> static struct task_tcb_s tcb;
>> static uint8_t stack[CONFIG_NETWORK_THREAD_STACKSIZE]
>>
>> void start_my_thread()
>> {
>>      memset(&tcb, 0, sizeof(struct task_tcb_s));
>>      tcb.cmn.flags = TCB_FLAG_TTYPE_TASK;
>>
>>      int ret = nxtask_init(&tcb, "Network",
>> CONFIG_NETWORK_THREAD_PRIORITY,
>> stack, CONFIG_NETWORK_THREAD_STACKSIZE, network_th, NULL);
>>      if (ret < 0)
>>      {
>>           //error handling...
>>      }
>>
>>      nxtask_activate(&tcb.cmn);
>> }
>>
>>
>> This new thread seems to be working OK (I haven't done any extensive
>> testing yet), but running ps in nsh yields:
>>
>>     5  80 FIFO     Task    --- Ready              00000000 008156 008156
>> 100.0%! Network
>>
>> The stack is always reported as 100% full. I tried increasing it to
>> excessive numbers but it still.
>> I believe that I have configured something wrong? Or this is not the
>> correct way to init a task with a static stack?
>>
>

Reply via email to