summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/src/itronsem.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/itron/src/itronsem.c')
-rw-r--r--c/src/exec/itron/src/itronsem.c284
1 files changed, 0 insertions, 284 deletions
diff --git a/c/src/exec/itron/src/itronsem.c b/c/src/exec/itron/src/itronsem.c
index a41775f0f6..b7f93c3a55 100644
--- a/c/src/exec/itron/src/itronsem.c
+++ b/c/src/exec/itron/src/itronsem.c
@@ -51,287 +51,3 @@ void _ITRON_Semaphore_Manager_initialization(
}
-/*
- * cre_sem - Create Semaphore
- *
- * This function implements the ITRON 3.0 cre_sem() service.
- */
-
-ER cre_sem(
- ID semid,
- T_CSEM *pk_csem
-)
-{
- CORE_semaphore_Attributes the_semaphore_attributes;
- ITRON_Semaphore_Control *the_semaphore;
-
- /*
- * Bad pointer to the attributes structure
- */
-
- if ( !pk_csem )
- return E_PAR;
-
- /*
- * Bits were set that were note defined.
- */
-
- if ( pk_csem->sematr & _ITRON_SEMAPHORE_UNUSED_ATTRIBUTES )
- return E_RSATR;
-
- /*
- * Initial semaphore count exceeds the maximum.
- */
-
- if ( pk_csem->isemcnt > pk_csem->maxsem )
- return E_PAR;
-
- /*
- * This error is not in the specification but this condition
- * does not make sense.
- */
-
- if ( pk_csem->maxsem == 0 )
- return E_PAR;
-
- _Thread_Disable_dispatch(); /* prevents deletion */
-
- the_semaphore = _ITRON_Semaphore_Allocate( semid );
- if ( !the_semaphore ) {
- _Thread_Enable_dispatch();
- return _ITRON_Semaphore_Clarify_allocation_id_error( semid );
- }
-
- if ( pk_csem->sematr & TA_TPRI )
- the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
- else
- the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
-
- the_semaphore_attributes.maximum_count = pk_csem->maxsem;
-
- _CORE_semaphore_Initialize(
- &the_semaphore->semaphore,
- OBJECTS_ITRON_SEMAPHORES,
- &the_semaphore_attributes,
- pk_csem->isemcnt,
- NULL /* Multiprocessing not supported */
- );
-
- _ITRON_Objects_Open( &_ITRON_Semaphore_Information, &the_semaphore->Object );
-
- /*
- * If multiprocessing were supported, this is where we would announce
- * the existence of the semaphore to the rest of the system.
- */
-
-#if defined(RTEMS_MULTIPROCESSING)
-#endif
-
- _Thread_Enable_dispatch();
- return E_OK;
-}
-
-/*
- * del_sem - Delete Semaphore
- *
- * This function implements the ITRON 3.0 del_sem() service.
- */
-
-ER del_sem(
- ID semid
-)
-{
- ITRON_Semaphore_Control *the_semaphore;
- Objects_Locations location;
-
- the_semaphore = _ITRON_Semaphore_Get( semid, &location );
- switch ( location ) {
- case OBJECTS_REMOTE: /* Multiprocessing not supported */
- case OBJECTS_ERROR:
- return _ITRON_Semaphore_Clarify_get_id_error( semid );
-
- case OBJECTS_LOCAL:
- _CORE_semaphore_Flush(
- &the_semaphore->semaphore,
- NULL, /* Multiprocessing not supported */
- CORE_SEMAPHORE_WAS_DELETED
- );
-
- _ITRON_Objects_Close(
- &_ITRON_Semaphore_Information,
- &the_semaphore->Object
- );
-
- _ITRON_Semaphore_Free( the_semaphore );
-
- /*
- * If multiprocessing were supported, this is where we would announce
- * the destruction of the semaphore to the rest of the system.
- */
-
-#if defined(RTEMS_MULTIPROCESSING)
-#endif
-
- _Thread_Enable_dispatch();
- return E_OK;
-
- }
- return E_OK;
-}
-
-/*
- * sig_sem - Signal Semaphore
- *
- * This function implements the ITRON 3.0 sig_sem() service.
- */
-
-ER sig_sem(
- ID semid
-)
-{
- ITRON_Semaphore_Control *the_semaphore;
- Objects_Locations location;
- CORE_semaphore_Status status;
-
- the_semaphore = _ITRON_Semaphore_Get( semid, &location );
- switch ( location ) {
- case OBJECTS_REMOTE: /* Multiprocessing not supported */
- case OBJECTS_ERROR:
- return _ITRON_Semaphore_Clarify_get_id_error( semid );
-
- case OBJECTS_LOCAL:
- /*
- * XXX maxsemcnt
- */
-
- status = _CORE_semaphore_Surrender(
- &the_semaphore->semaphore,
- the_semaphore->Object.id,
- NULL /* Multiprocessing not supported */
- );
- _Thread_Enable_dispatch();
- return _ITRON_Semaphore_Translate_core_semaphore_return_code( status );
- }
- return E_OK;
-}
-
-/*
- * wai_sem - Wait on Semaphore
- *
- * This function implements the ITRON 3.0 wai_sem() service.
- */
-
-ER wai_sem(
- ID semid
-)
-{
- return twai_sem( semid, TMO_FEVR );
-}
-
-/*
- * preq_sem - Poll and Request Semaphore
- *
- * This function implements the ITRON 3.0 preq_sem() service.
- */
-
-ER preq_sem(
- ID semid
-)
-{
- return twai_sem( semid, TMO_POL );
-}
-
-/*
- * twai_sem - Wait on Semaphore with Timeout
- *
- * This function implements the ITRON 3.0 twai_sem() service.
- */
-
-ER twai_sem(
- ID semid,
- TMO tmout
-)
-{
- ITRON_Semaphore_Control *the_semaphore;
- Objects_Locations location;
- Watchdog_Interval interval;
- boolean wait;
- CORE_semaphore_Status status;
-
- interval = 0;
- if ( tmout == TMO_POL ) {
- wait = FALSE;
- } else {
- wait = TRUE;
- if ( tmout != TMO_FEVR )
- interval = TOD_MILLISECONDS_TO_TICKS(tmout);
- }
-
- if ( wait && _ITRON_Is_in_non_task_state() )
- return E_CTX;
-
- the_semaphore = _ITRON_Semaphore_Get( semid, &location );
- switch ( location ) {
- case OBJECTS_REMOTE: /* Multiprocessing not supported */
- case OBJECTS_ERROR:
- return _ITRON_Semaphore_Clarify_get_id_error( semid );
-
- case OBJECTS_LOCAL:
- _CORE_semaphore_Seize(
- &the_semaphore->semaphore,
- the_semaphore->Object.id,
- wait, /* wait for a timeout */
- interval /* timeout value */
- );
- _Thread_Enable_dispatch();
- status = (CORE_semaphore_Status) _Thread_Executing->Wait.return_code;
- return _ITRON_Semaphore_Translate_core_semaphore_return_code( status );
- }
- return E_OK;
-}
-
-/*
- * ref_sem - Reference Semaphore Status
- *
- * This function implements the ITRON 3.0 ref_sem() service.
- */
-
-ER ref_sem(
- ID semid,
- T_RSEM *pk_rsem
-)
-{
- ITRON_Semaphore_Control *the_semaphore;
- Objects_Locations location;
-
- if ( !pk_rsem )
- return E_PAR; /* XXX check this error code */
-
- the_semaphore = _ITRON_Semaphore_Get( semid, &location );
- switch ( location ) {
- case OBJECTS_REMOTE: /* Multiprocessing not supported */
- case OBJECTS_ERROR:
- return _ITRON_Semaphore_Clarify_get_id_error( semid );
-
- case OBJECTS_LOCAL:
- /*
- * Fill in the current semaphore count
- */
-
- pk_rsem->semcnt = _CORE_semaphore_Get_count( &the_semaphore->semaphore );
-
- /*
- * Fill in whether or not there is a waiting task
- */
-
- if ( !_Thread_queue_First( &the_semaphore->semaphore.Wait_queue ) )
- pk_rsem->wtsk = FALSE;
- else
- pk_rsem->wtsk = TRUE;
-
- _Thread_Enable_dispatch();
- return E_OK;
- }
- return E_OK;
-}
-