You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2022/01/20 18:53:45 UTC

[GitHub] [incubator-nuttx] fjpanag commented on pull request #5266: IDLE thread will not boost up when IDLE hold sem

fjpanag commented on pull request #5266:
URL: https://github.com/apache/incubator-nuttx/pull/5266#issuecomment-1017817251


   > @fjpanag could you try this patch whether fix your problem.
   
   Sorry, too busy yesterday.  
   I just had the chance to test this on actual hardware.
   For the moment it seems that *at least on my application*, it resolves the issue.
   
   However I think that this is a bad solution, because it has the potential for an ugly deadlock.
   The other propositions harmed the real-time behavior of the system, but this can lock us outside of the mm!
   
   Since the priority of the Idle Task cannot be boosted anymore, and since it holds the mm, if it doesn't get the chance to run again then we lost access to the mm. And this chance seems quite high, because the Idle task mostly holds this semaphore and because it is normal for real-time systems to never return to idle.
   
   ---
   ```
   enter_crtitical_sectiion();
   mm_checkcurrption();
   leave_crtitical_sectiion();
   ```
   
   This solution is better, since it cannot cause this issue.  
   On the other hand, it locks the system unecessarily most of the time, causes heavy jitter and harms the RT behaviour.
   
   ---
   
   ```
   if ((sched_priority < SCHED_PRIORITY_MIN ||
       sched_priority > SCHED_PRIORITY_MAX) &&
       !(sched_priority == 0 && tcb->pid == 0))
     {
       return -EINVAL;
     }
   ```
   
   I believe that this is even better, because it has the disadvantages of the previous solution *only if it is actually needed*, not every time. It is still harmful though.
   
   ---
   
   At this moment I am of the strong belief that the Idle Task must do nothing at all.  
   Everything it does should be moved to workers or elsewhere. Somewhere that they can be properly managed, and affect the system in a logical and expected way.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org