diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-01-05 22:19:21 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-01-05 22:19:21 +0000 |
commit | 5870ac55678115857215a4199f519263599ee341 (patch) | |
tree | 8b6f044ae7cccc3da9a3bd69b2468c2ca77acff8 /cpukit/rtems/inline/rtems/rtems/attr.inl | |
parent | Updated to reflect a time that had previously been left out due to (diff) | |
download | rtems-5870ac55678115857215a4199f519263599ee341.tar.bz2 |
Added support for simple binary semaphores in addition to the high
power binary/mutex style semaphores already supported by RTEMS. This
was done at the request of Eric Norum <eric@cls.usask.ca> in support
of his effort to port EPICS to RTEMS. This change consisted of
changing the nesting_allowed boolean into a lock_nesting_behavior
enumerated value as well as allowing the core mutex object to optionally
support ensuring that the holder of a binary semaphore released it.
Finally, a more subtle enhancement was to allow the non-holder to release
a priority inheritance/ceiling mutex and still allow the holding task
to return to its original priority.
Diffstat (limited to 'cpukit/rtems/inline/rtems/rtems/attr.inl')
-rw-r--r-- | cpukit/rtems/inline/rtems/rtems/attr.inl | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/cpukit/rtems/inline/rtems/rtems/attr.inl b/cpukit/rtems/inline/rtems/rtems/attr.inl index 94a8052648..d35be0dca4 100644 --- a/cpukit/rtems/inline/rtems/rtems/attr.inl +++ b/cpukit/rtems/inline/rtems/rtems/attr.inl @@ -119,58 +119,76 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_binary_semaphore( rtems_attribute attribute_set ) { - return ( attribute_set & RTEMS_BINARY_SEMAPHORE ); + return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE); } /*PAGE * - * _Attributes_Is_inherit_priority + * _Attributes_Is_simple_binary_semaphore * * DESCRIPTION: * - * This function returns TRUE if the priority inheritance attribute - * is enabled in the attribute_set and FALSE otherwise. + * This function returns TRUE if the simple binary semaphore attribute is + * enabled in the attribute_set and FALSE otherwise. */ -RTEMS_INLINE_ROUTINE boolean _Attributes_Is_inherit_priority( +RTEMS_INLINE_ROUTINE boolean _Attributes_Is_simple_binary_semaphore( + rtems_attribute attribute_set +) +{ + return + ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_SIMPLE_BINARY_SEMAPHORE); +} + +/*PAGE + * + * _Attributes_Is_counting_semaphore + * + * DESCRIPTION: + * + * This function returns TRUE if the counting semaphore attribute is + * enabled in the attribute_set and FALSE otherwise. + */ + +RTEMS_INLINE_ROUTINE boolean _Attributes_Is_counting_semaphore( rtems_attribute attribute_set ) { - return ( attribute_set & RTEMS_INHERIT_PRIORITY ); + return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE); } /*PAGE * - * _Attributes_Is_priority_ceiling + * _Attributes_Is_inherit_priority * * DESCRIPTION: * - * This function returns TRUE if the priority ceiling attribute + * This function returns TRUE if the priority inheritance attribute * is enabled in the attribute_set and FALSE otherwise. */ - -RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority_ceiling( + +RTEMS_INLINE_ROUTINE boolean _Attributes_Is_inherit_priority( rtems_attribute attribute_set ) { - return ( attribute_set & RTEMS_PRIORITY_CEILING ); + return ( attribute_set & RTEMS_INHERIT_PRIORITY ); } /*PAGE * - * _Attributes_Is_nesting_allowed + * _Attributes_Is_priority_ceiling * * DESCRIPTION: * - * This function returns TRUE if the nesting allowed attribute + * This function returns TRUE if the priority ceiling attribute * is enabled in the attribute_set and FALSE otherwise. */ -RTEMS_INLINE_ROUTINE boolean _Attributes_Is_nesting_allowed( +RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority_ceiling( rtems_attribute attribute_set ) { - return ( !(attribute_set & RTEMS_NO_NESTING_ALLOWED) ); + return ( attribute_set & RTEMS_PRIORITY_CEILING ); } /*PAGE |