Shell bug(?)
Joel Sherrill
joel at rtems.org
Fri Nov 1 19:40:07 UTC 2019
On Fri, Nov 1, 2019 at 12:33 PM Gedare Bloom <gedare at rtems.org> wrote:
>
> On Fri, Nov 1, 2019 at 10:52 AM Mathew Benson <mbenson at windhoverlabs.com>
> wrote:
>
>> So no matter what priority the shell task is initialized as, it preempts
>> all other tasks?
>>
>> No.
>
But an odd artifact of looking at the status of threads in the shell is
that the shell thread has to be **EXECUTING** to do that. Since this is a
single core system, it means all other threads are either blocked or ready
and have a lower priority.
>
> With low priority (250) under the default scheduling (fixed priority
> round-robin), the shell would only run when higher priority tasks are
> blocked. This is typical, and the shell will be preempted when higher
> priority tasks are made ready. The "TIME" state indicates your driver task
> self-suspended on a timer, e.g., nanosleep or wake_after type call. It
> should preempt the shell after the timeout. If it isn't then something is
> going strangely.
>
Yep.
>
> As Joel hinted, if you're using POSIX threads, then 250 is higher priority
> than 235.
>
But I don't know how this is reported by the command he is using. I recall
one command to list Classic API tasks and one for POSIX threads. I don't
recall one which lists all but I could be wrong.
--joel
>
> Gedare
>
>
>> On Fri, Nov 1, 2019 at 11:36 AM Joel Sherrill <joel at rtems.org> wrote:
>>
>>>
>>>
>>> On Fri, Nov 1, 2019, 11:24 AM Mathew Benson <mbenson at windhoverlabs.com>
>>> wrote:
>>>
>>>> My shell task is set to priority 250. I have another task that I've
>>>> set to a priority of 235. When I have the shell in the build, that
>>>> priority 235 task appears to pend indefinitely with the shell reporting
>>>> state = "TIME" and I don't know where it would be pending. The task is
>>>> accessing NOR drivers. But just by running the shell command, releases
>>>> that priority 235 task. In fact, any command releases it. Whether its a
>>>> valid command or not. But if I remove the shell from the build, everything
>>>> is fine. The task doesn't pend. It executes as it should. Did I miss
>>>> something in the documentation regarding integration of the shell? Is
>>>> there something we are or are not supposed to do when the shell is
>>>> integrated?
>>>>
>>>
>>> I'm off today and this is from my phone.
>>>
>>> TIME should indicate that the task is sleeping. Assuming these are not
>>> POSIX thread priority The priority 235 task has to be blocked or the shell
>>> task won't run at all. So anytime your shell task runs, the others should
>>> be blocked.
>>>
>>> --joel
>>>
>>>>
>>>> --
>>>> *Mathew Benson*
>>>> CEO | Chief Engineer
>>>> Windhover Labs, LLC
>>>> 832-640-4018
>>>>
>>>>
>>>> www.windhoverlabs.com
>>>>
>>>> _______________________________________________
>>>> users mailing list
>>>> users at rtems.org
>>>> http://lists.rtems.org/mailman/listinfo/users
>>>
>>>
>>
>> --
>> *Mathew Benson*
>> CEO | Chief Engineer
>> Windhover Labs, LLC
>> 832-640-4018
>>
>>
>> www.windhoverlabs.com
>>
>> _______________________________________________
>> users mailing list
>> users at rtems.org
>> http://lists.rtems.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20191101/e790834c/attachment.html>
More information about the users
mailing list