source: rtems/c/src/exec/rtems/inline/sem.inl @ 1a8fde6c

4.104.114.84.95
Last change on this file since 1a8fde6c was 1a8fde6c, checked in by Joel Sherrill <joel.sherrill@…>, on 03/06/96 at 21:34:57

Removed prototyes for static inline routines and moved the comments into
the inline implementation. The impetus for this was twofold. First,
it is incorrect to have static inline prototypes when using the macro
implementation. Second, this reduced the number of lines in the include
files seen by rtems.h by about 2000 lines.

Next we restricted visibility for the inline routines to inside the
executive itself EXCEPT for a handful of objects. This reduced the
number of include files included by rtems.h by 40 files and reduced
the lines in the include files seen by rtems.h by about 6000 lines.

In total, these reduced the compile time of the entire RTEMS tree by 20%.
This results in about 8 minutes savings on the SparcStation? 10 morgana.

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/*  sem.inl
2 *
3 *  This file contains the static inlin implementation of the inlined
4 *  routines from the Semaphore Manager.
5 *
6 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
7 *  On-Line Applications Research Corporation (OAR).
8 *  All rights assigned to U.S. Government, 1994.
9 *
10 *  This material may be reproduced by or for the U.S. Government pursuant
11 *  to the copyright license under the clause at DFARS 252.227-7013.  This
12 *  notice must appear in all copies of this file and its derivatives.
13 *
14 *  $Id$
15 */
16
17#ifndef __SEMAPHORE_inl
18#define __SEMAPHORE_inl
19
20/*PAGE
21 *
22 *  _Semaphore_Allocate
23 *
24 *  DESCRIPTION:
25 *
26 *  This function allocates a semaphore control block from
27 *  the inactive chain of free semaphore control blocks.
28 */
29
30STATIC INLINE Semaphore_Control *_Semaphore_Allocate( void )
31{
32  return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
33}
34
35/*PAGE
36 *
37 *  _Semaphore_Free
38 *
39 *  DESCRIPTION:
40 *
41 *  This routine frees a semaphore control block to the
42 *  inactive chain of free semaphore control blocks.
43 */
44
45STATIC INLINE void _Semaphore_Free (
46  Semaphore_Control *the_semaphore
47)
48{
49  _Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
50}
51
52/*PAGE
53 *
54 *  _Semaphore_Get
55 *
56 *  DESCRIPTION:
57 *
58 *  This function maps semaphore IDs to semaphore control blocks.
59 *  If ID corresponds to a local semaphore, then it returns
60 *  the_semaphore control pointer which maps to ID and location
61 *  is set to OBJECTS_LOCAL.  if the semaphore ID is global and
62 *  resides on a remote node, then location is set to OBJECTS_REMOTE,
63 *  and the_semaphore is undefined.  Otherwise, location is set
64 *  to OBJECTS_ERROR and the_semaphore is undefined.
65 */
66
67STATIC INLINE Semaphore_Control *_Semaphore_Get (
68  Objects_Id         id,
69  Objects_Locations *location
70)
71{
72  return (Semaphore_Control *)
73    _Objects_Get( &_Semaphore_Information, id, location );
74}
75
76/*PAGE
77 *
78 *  _Semaphore_Is_null
79 *
80 *  DESCRIPTION:
81 *
82 *  This function returns TRUE if the_semaphore is NULL and FALSE otherwise.
83 */
84
85STATIC INLINE boolean _Semaphore_Is_null (
86  Semaphore_Control *the_semaphore
87)
88{
89  return ( the_semaphore == NULL );
90}
91
92#endif
93/*  end of include file */
Note: See TracBrowser for help on using the repository browser.