summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/inline/rtems/rtems/attr.inl
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-05 22:19:21 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-05 22:19:21 +0000
commit5870ac55678115857215a4199f519263599ee341 (patch)
tree8b6f044ae7cccc3da9a3bd69b2468c2ca77acff8 /cpukit/rtems/inline/rtems/rtems/attr.inl
parentUpdated to reflect a time that had previously been left out due to (diff)
downloadrtems-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 '')
-rw-r--r--cpukit/rtems/inline/rtems/rtems/attr.inl48
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