OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [exec/] [itron/] [inline/] [rtems/] [itron/] [semaphore.inl] - Blame information for rev 173

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*
2
 *  COPYRIGHT (c) 1989-1999.
3
 *  On-Line Applications Research Corporation (OAR).
4
 *
5
 *  The license and distribution terms for this file may be
6
 *  found in the file LICENSE in this distribution or at
7
 *  http://www.OARcorp.com/rtems/license.html.
8
 *
9
 *  $Id: semaphore.inl,v 1.2 2001-09-27 11:59:13 chris Exp $
10
 */
11
 
12
#ifndef __ITRON_SEMAPHORE_inl_
13
#define __ITRON_SEMAPHORE_inl_
14
 
15
#ifdef __cplusplus
16
extern "C" {
17
#endif
18
 
19
/*
20
 *  _ITRON_Semaphore_Allocate
21
 *
22
 *  DESCRIPTION:
23
 *
24
 *  This routine allocates the semaphore associated with the specified
25
 *  semaphore ID from the pool of inactive semaphores.
26
 *
27
 *  Input parameters:
28
 *    semid   - id of semaphore to allocate
29
 *    status  - pointer to status variable
30
 *
31
 *  Output parameters:
32
 *    returns - pointer to the semaphore control block
33
 *    *status - status
34
 */
35
 
36
RTEMS_INLINE_ROUTINE ITRON_Semaphore_Control *_ITRON_Semaphore_Allocate(
37
  ID   semid
38
)
39
{
40
  return (ITRON_Semaphore_Control *)_ITRON_Objects_Allocate_by_index(
41
    &_ITRON_Semaphore_Information,
42
    semid,
43
    sizeof(ITRON_Semaphore_Control)
44
  );
45
}
46
 
47
/*
48
 *  _ITRON_Semaphore_Clarify_allocation_id_error
49
 *
50
 *  This function is invoked when an object allocation ID error
51
 *  occurs to determine the specific ITRON error code to return.
52
 */
53
 
54
#define _ITRON_Semaphore_Clarify_allocation_id_error( _id ) \
55
  _ITRON_Objects_Clarify_allocation_id_error( \
56
      &_ITRON_Semaphore_Information, (_id) )
57
 
58
/*
59
 *  _ITRON_Semaphore_Clarify_get_id_error
60
 *
61
 *  This function is invoked when an object get ID error
62
 *  occurs to determine the specific ITRON error code to return.
63
 */
64
 
65
#define _ITRON_Semaphore_Clarify_get_id_error( _id ) \
66
 _ITRON_Objects_Clarify_get_id_error( &_ITRON_Semaphore_Information, (_id) )
67
 
68
/*
69
 *  _ITRON_Semaphore_Free
70
 *
71
 *  DESCRIPTION:
72
 *
73
 *  This routine frees a semaphore control block to the
74
 *  inactive chain of free semaphore control blocks.
75
 *
76
 *  Input parameters:
77
 *    the_semaphore - pointer to semaphore control block
78
 *
79
 *  Output parameters: NONE
80
 */
81
 
82
RTEMS_INLINE_ROUTINE void _ITRON_Semaphore_Free (
83
  ITRON_Semaphore_Control *the_semaphore
84
)
85
{
86
  _ITRON_Objects_Free( &_ITRON_Semaphore_Information, &the_semaphore->Object );
87
}
88
 
89
/*PAGE
90
 *
91
 *  _ITRON_Semaphore_Get
92
 *
93
 *  DESCRIPTION:
94
 *
95
 *  This function maps semaphore IDs to semaphore control blocks.
96
 *  If ID corresponds to a local semaphore, then it returns
97
 *  the_semaphore control pointer which maps to ID and location
98
 *  is set to OBJECTS_LOCAL.  if the semaphore ID is global and
99
 *  resides on a remote node, then location is set to OBJECTS_REMOTE,
100
 *  and the_semaphore is undefined.  Otherwise, location is set
101
 *  to OBJECTS_ERROR and the_semaphore is undefined.
102
 *
103
 *  Input parameters:
104
 *    id            - ITRON semaphore ID.
105
 *    the_location  - pointer to a location variable
106
 *
107
 *  Output parameters:
108
 *    *the_location  - location of the object
109
 */
110
 
111
RTEMS_INLINE_ROUTINE ITRON_Semaphore_Control *_ITRON_Semaphore_Get (
112
  ID                 id,
113
  Objects_Locations *location
114
)
115
{
116
  return (ITRON_Semaphore_Control *)
117
    _ITRON_Objects_Get( &_ITRON_Semaphore_Information, id, location );
118
}
119
 
120
/*PAGE
121
 *
122
 *  _ITRON_Semaphore_Is_null
123
 *
124
 *  This function returns TRUE if the_semaphore is NULL and FALSE otherwise.
125
 *
126
 *  Input parameters:
127
 *    the_semaphore - pointer to semaphore control block
128
 *
129
 *  Output parameters:
130
 *    TRUE  - if the_semaphore is NULL
131
 *    FALSE - otherwise
132
 */
133
 
134
RTEMS_INLINE_ROUTINE boolean _ITRON_Semaphore_Is_null (
135
  ITRON_Semaphore_Control *the_semaphore
136
)
137
{
138
  return ( the_semaphore == NULL );
139
}
140
 
141
/*
142
 *  _ITRON_Semaphore_Translate_core_semaphore_return_code
143
 *
144
 *  This function returns a ITRON status code based on the semaphore
145
 *  status code specified.
146
 *
147
 *  Input parameters:
148
 *    the_semaphore_status - semaphore status code to translate
149
 *
150
 *  Output parameters:
151
 *    ITRON status code - translated ITRON status code
152
 *
153
 */
154
 
155
RTEMS_INLINE_ROUTINE ER  _ITRON_Semaphore_Translate_core_semaphore_return_code (
156
  unsigned32 the_semaphore_status
157
)
158
{
159
/* XXX need to be able to return "E_RLWAI" */
160
  switch ( the_semaphore_status ) {
161
    case  CORE_SEMAPHORE_STATUS_SUCCESSFUL:
162
      return E_OK;
163
    case CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT:
164
      return E_TMOUT;
165
    case CORE_SEMAPHORE_WAS_DELETED:
166
      return E_DLT;
167
    case CORE_SEMAPHORE_TIMEOUT:
168
      return E_TMOUT;
169
    case CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED:
170
      return E_QOVR;
171
    case THREAD_STATUS_PROXY_BLOCKING:
172
      return THREAD_STATUS_PROXY_BLOCKING;
173
  }
174
  return E_OK;   /* unreached - only to remove warnings */
175
}
176
 
177
#ifdef __cplusplus
178
}
179
#endif
180
 
181
#endif
182
/* end of include file */
183
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.