<div dir="ltr"><div>Hi,<br><br>#define _ISR_Disable( _level ) \<br>  do { \<br>    _CPU_ISR_Disable( _level ); \<br>    _Assert( _Debug_Is_owner_of_giant() ); \<br>    RTEMS_COMPILER_MEMORY_BARRIER(); \<br>  } while (0)<br><br>the above macro has description:<br><br>@brief Disables interrupts on this processor.<br> *<br> *  This macro disables all interrupts on this processor so that a critical<br> *  section of code is protected from concurrent access by interrupts of this<br> *  processor.  Disabling of interrupts disables thread dispatching on the<br> *  processor as well.<br> *<br> *  On SMP configurations other processors can enter such sections if not<br> *  protected by other means.<br> *<br> *  @param[out] _level The argument @a _level will contain the previous<br> *  interrupt mask level.<br> */<br><br></div><div>And :<br>#define _ISR_Disable_without_giant( _level ) \<br>  do { \<br>    _CPU_ISR_Disable( _level ); \<br>    RTEMS_COMPILER_MEMORY_BARRIER(); \<br>  } while (0)<br><br></div><div>The above lock is acquired for SMP. <br><br></div><div>But how are both macros different. With former Macro it disables all interrupts as level is highest but how does it ensure thread_dispatch_disable?<br></div><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">Thanks,<div><br></div><div>Saurabh Gadia</div></div></div></div>
<br><div class="gmail_quote">On Wed, Aug 12, 2015 at 9:52 AM, Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@gwu.edu" target="_blank">gedare@gwu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Aug 12, 2015 at 11:48 AM, Saurabh Gadia <<a href="mailto:gadia@usc.edu">gadia@usc.edu</a>> wrote:<br>
> Hi,<br>
><br>
> For operations related to manipulation of Chain_Node we have two modes for<br>
> that: protected and unprotected. In protected access to chain we guard the<br>
> operation by disabling the interrupts while in unprotected we don't guard<br>
> it. Is it that we don't disable interrupts in unprotected mode because we<br>
> are sure that ISR will not affect the operation and with protected ISR may<br>
> affect the operation so we guard operation against it. When is protected and<br>
> unprotected used in respect with the context?<br>
><br>
</span>Correct. "unprotected" means something else has already ensured mutual<br>
exclusion.<br>
<br>
> Thanks,<br>
><br>
> Saurabh Gadia<br>
><br>
> _______________________________________________<br>
> devel mailing list<br>
> <a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote></div><br></div>