diff options
Diffstat (limited to 'cpukit/itron/macros/rtems/itron/semaphore.inl')
-rw-r--r-- | cpukit/itron/macros/rtems/itron/semaphore.inl | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/cpukit/itron/macros/rtems/itron/semaphore.inl b/cpukit/itron/macros/rtems/itron/semaphore.inl new file mode 100644 index 0000000000..ec435e1648 --- /dev/null +++ b/cpukit/itron/macros/rtems/itron/semaphore.inl @@ -0,0 +1,102 @@ +/* + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#ifndef __ITRON_SEMAPHORE_inl_ +#define __ITRON_SEMAPHORE_inl_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * _ITRON_Semaphore_Allocate + */ + +#define _ITRON_Semaphore_Allocate( _semid ) \ + (ITRON_Semaphore_Control *)_ITRON_Objects_Allocate_by_index( \ + &_ITRON_Semaphore_Information, \ + (_semid), \ + sizeof(ITRON_Semaphore_Control) \ + ) + +/* + * _ITRON_Semaphore_Clarify_allocation_id_error + */ + +#define _ITRON_Semaphore_Clarify_allocation_id_error( _id ) \ + _ITRON_Objects_Clarify_allocation_id_error( \ + &_ITRON_Semaphore_Information, (_id) ) + +/* + * _ITRON_Semaphore_Clarify_get_id_error + */ + +#define _ITRON_Semaphore_Clarify_get_id_error( _id ) \ + _ITRON_Objects_Clarify_get_id_error( &_ITRON_Semaphore_Information, (_id) ) + +/* + * _ITRON_Semaphore_Free + */ + +#define _ITRON_Semaphore_Free( _the_semaphore ) \ + _ITRON_Objects_Free( &_ITRON_Semaphore_Information, &(_the_semaphore)->Object ) + +/*PAGE + * + * _ITRON_Semaphore_Get + */ + +#define _ITRON_Semaphore_Get( _id, _location ) \ + (ITRON_Semaphore_Control *) \ + _ITRON_Objects_Get( &_ITRON_Semaphore_Information, (_id), (_location) ) + +/*PAGE + * + * _ITRON_Semaphore_Is_null + */ + +#define _ITRON_Semaphore_Is_null( _the_semaphore ) \ + ( (_the_semaphore) == NULL ) + +/* + * _ITRON_Semaphore_Translate_core_semaphore_return_code + */ + +/* XXX fix me */ +static ER _ITRON_Semaphore_Translate_core_semaphore_return_code ( + unsigned32 the_semaphore_status +) +{ +/* XXX need to be able to return "E_RLWAI" */ + switch ( the_semaphore_status ) { + case CORE_SEMAPHORE_STATUS_SUCCESSFUL: + return E_OK; + case CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT: + return E_TMOUT; + case CORE_SEMAPHORE_WAS_DELETED: + return E_DLT; + case CORE_SEMAPHORE_TIMEOUT: + return E_TMOUT; + case CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED: + return E_QOVR; + case THREAD_STATUS_PROXY_BLOCKING: + return THREAD_STATUS_PROXY_BLOCKING; + } + return E_OK; /* unreached - only to remove warnings */ +} + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + |