<div dir="ltr">Dear Dr. Sherrill,<div><br></div><div>Thank you for your answer. Your explanation has been helpful.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It would seem that we need a discussion of the types of critical sections, when they are used, and the difference between uniprocessor and symmetric processing configurations.</blockquote><div>It'd be really helpful if someone can write about this in the documentation. </div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This is a critical section which prevents thread context switches from occurring while the dispatch level is not zero. This is generally used so dispatching is deferred until the end of operations. It is also used so we do not attempt to switch to another thread while in the middle of an interrupt service routine</blockquote><div> Okay, so this is for the dispatch disable level, what about pin level? Is it like a boolean value in some way, true for level 1 and false for 0?  </div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Dec 5, 2020 at 10:20 PM Joel Sherrill <<a href="mailto:joel@rtems.org">joel@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Dec 5, 2020, 12:15 AM Richi Dubey <<a href="mailto:richidubey@gmail.com" target="_blank">richidubey@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I tried searching it on Google and RTEMS Documentation, but couldn't find anything that explains this.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Dec 5, 2020 at 11:34 AM Richi Dubey <<a href="mailto:richidubey@gmail.com" rel="noreferrer" target="_blank">richidubey@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<br><div><br></div><div>Can someone please help me understand what is meant by level? What is meant by the dispatch level and the pin level and other such definitions? I just want a high-level idea of what we achieve by having levels and why we need them. </div></div></blockquote></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">This is a critical section which prevents thread context switches from occurring while the dispatch level is not zero. This is generally used so dispatching is deferred until the end of operations. It is also used so we do not attempt to switch to another thread while in the middle of an interrupt service routine</div><div dir="auto"><br></div><div dir="auto">I would think this was documented somewhere but honestly I don't know where.  If someone has a suggestion , then we should add it.</div><div dir="auto"><br></div><div dir="auto">It would seem that we need a discussion of the types of critical sections, when they are used, and the difference between uniprocessor and symmetric processing configurations.</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Why do we have:</div><div><br></div><div> _Assert( cpu_self->thread_dispatch_disable_level == 1 );<br></div><div><br></div><div>in some codes?</div></div></blockquote></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">This means that the software should not be called when dispatching is disabled. This may mean not from an interrupt service routine although that is by implication since you could have checked the interrupt nest level. This can prevent some methods from being called from a user extension. </div><div dir="auto"><br></div><div dir="auto">--joel</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
</blockquote></div>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" rel="noreferrer" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a></blockquote></div></div></div>
</blockquote></div>