That’s kind of my point.  The low priority shell task is working perfectly.  
The higher priority task is pended by time.  I do have some sleep functions in 
the driver code but they are short sleeps.  They shouldn’t just pens 
indefinitely until a run any random command in the shell.  Unless I’m not 
understanding the priority model correctly and have inadvertently inverted my 
prioritities.

Sent from my iPhone

> On Nov 1, 2019, at 14:40, Joel Sherrill <j...@rtems.org> wrote:
> 
> 
> 
>> On Fri, Nov 1, 2019 at 12:33 PM Gedare Bloom <ged...@rtems.org> wrote:
>> 
>>> On Fri, Nov 1, 2019 at 10:52 AM Mathew Benson <mben...@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 <j...@rtems.org> wrote:
>>>> 
>>>> 
>>>>> On Fri, Nov 1, 2019, 11:24 AM Mathew Benson <mben...@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@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@rtems.org
>>> http://lists.rtems.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to