[Bug 1809] New: SMP : Lock/Unlock critical Section

bugzilla-daemon at rtems.org bugzilla-daemon at rtems.org
Tue May 24 14:36:17 UTC 2011


https://www.rtems.org/bugzilla/show_bug.cgi?id=1809

           Summary: SMP : Lock/Unlock critical Section
           Product: RTEMS
           Version: HEAD
          Platform: All
        OS/Version: RTEMS
            Status: NEW
          Severity: normal
          Priority: P3
         Component: cpukit
        AssignedTo: joel.sherrill at oarcorp.com
        ReportedBy: frederic.brault at kalray.eu


Created an attachment (id=1190)
 --> (https://www.rtems.org/bugzilla/attachment.cgi?id=1190)
lock/unlock critical sections

This is a rather big patch, impacting many files.

It adds a call to _Lock_Critical_Section and _Unlock_Critical_Section around
critical sections. Until then, those sections were mostly protected by calls to
ISR_Disable/Enable.

At first, the approach we took was just to overload ISR_Enable/Disable and add
a lock in this macro. But it turned out this approach is counterproductive
since it mixes up two things which are fundamentaly different : locking to
protect critical code sections in an SMP contetx, and setting interrupt level.

So this patch does it the hard way and adds two macros :

- _Lock_Critical_Section
- _Unlock_Critical_Section

For now, they are left blank. In our implementation, we use a
"Big_Kernel_Lock", but that's another topic. 

This patch can be seen as a first attempt to identify critical section in SMP
code.

Most of the time, it's basically just adding a _Lock_Critical_Section() right
next to ISR_Disable, and _Unlock next to ISR_Disable.

However, we have started in some places to move locks around for correctness
and/or optimization.

-- 
Configure bugmail: https://www.rtems.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the bugs mailing list