summaryrefslogtreecommitdiffstats
path: root/cpukit/score/inline/rtems
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-30 18:33:57 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-30 18:33:57 +0000
commitfb1d8f81a0e38540fb470da89d044dd28b0134ad (patch)
treecaa751896d100e3e7eaf54fa4edfe18bb8454daf /cpukit/score/inline/rtems
parent2001-08-30 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-fb1d8f81a0e38540fb470da89d044dd28b0134ad.tar.bz2
2001-08-30 Joel Sherrill <joel@OARcorp.com>
* src/coremutex.c, src/coremutexseize.c, src/coremutexsurrender.c, inline/rtems/score/coremutex.inl: The per thread field resource_count should only be manipulated when a mutex is priority ceiling or priority inherit. This was reported by Chris Johns <ccj@acm.org> who also noticed that the use of switches for all disciplines generated less efficient code than using explicit tests for the one or two cases we were really interested in. Further review of his modifications made it apparent that the "isa" methods to test mutex discipline were not being used so this modification was swept into the code as well.
Diffstat (limited to 'cpukit/score/inline/rtems')
-rw-r--r--cpukit/score/inline/rtems/score/coremutex.inl7
1 files changed, 4 insertions, 3 deletions
diff --git a/cpukit/score/inline/rtems/score/coremutex.inl b/cpukit/score/inline/rtems/score/coremutex.inl
index fe783b3d91..b57b2ef2f4 100644
--- a/cpukit/score/inline/rtems/score/coremutex.inl
+++ b/cpukit/score/inline/rtems/score/coremutex.inl
@@ -134,9 +134,10 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock(
the_mutex->holder = executing;
the_mutex->holder_id = executing->Object.id;
the_mutex->nest_count = 1;
- executing->resource_count++;
- if ( the_mutex->Attributes.discipline !=
- CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING ) {
+ if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
+ _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) )
+ executing->resource_count++;
+ if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( level );
return 0;
}