source: rtems/c/src/exec/score/macros/rtems/score/coremutex.inl @ 5870ac55

4.104.114.84.95
Last change on this file since 5870ac55 was 5870ac55, checked in by Joel Sherrill <joel.sherrill@…>, on 01/05/00 at 22:19:21

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@…> 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.

  • Property mode set to 100644
File size: 1.3 KB
Line 
1/*  macros/coremutex.h
2 *
3 *  This include file contains all of the inlined routines associated
4 *  with core mutexes.
5 *
6 *  COPYRIGHT (c) 1989-1999.
7 *  On-Line Applications Research Corporation (OAR).
8 *
9 *  The license and distribution terms for this file may be
10 *  found in the file LICENSE in this distribution or at
11 *  http://www.OARcorp.com/rtems/license.html.
12 *
13 *  $Id$
14 */
15
16#ifndef __MACROS_CORE_MUTEX_h
17#define __MACROS_CORE_MUTEX_h
18
19
20/*PAGE
21 *
22 *  _CORE_mutex_Is_locked
23 *
24 */
25 
26#define _CORE_mutex_Is_locked( _the_mutex ) \
27  ( (_the_mutex)->lock == CORE_MUTEX_LOCKED )
28 
29/*PAGE
30 *
31 *  _CORE_mutex_Is_fifo
32 *
33 */
34 
35#define _CORE_mutex_Is_fifo( _the_attribute ) \
36  ( (_the_attribute)->discipline == CORE_MUTEX_DISCIPLINES_FIFO )
37 
38/*PAGE
39 *
40 *  _CORE_mutex_Is_priority
41 *
42 */
43
44#define _CORE_mutex_Is_priority( _the_attribute ) \
45  ( (_the_attribute)->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY )
46
47/*PAGE
48 *
49 *  _CORE_mutex_Is_inherit_priority
50 *
51 */
52 
53#define _CORE_mutex_Is_inherit_priority( _the_attribute ) \
54  ( (_the_attribute)->discipline == \
55                               CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT )
56 
57/*PAGE
58 *
59 *  _CORE_mutex_Is_priority_ceiling
60 *
61 */
62 
63#define _CORE_mutex_Is_priority_ceiling( _the_attribute )\
64  ( (_the_attribute)->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING )
65 
66#endif
67/* end of include file */
Note: See TracBrowser for help on using the repository browser.