summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/src/sig_sem.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-15 16:39:01 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-15 16:39:01 +0000
commitfb27af7637ca2d4844c67c20fbe026af6af8152c (patch)
treea10305a697a7009c3319008ef683edc5039d4a96 /c/src/exec/itron/src/sig_sem.c
parent+ Modified calls to use TSK_SLF for calls to self. (diff)
downloadrtems-fb27af7637ca2d4844c67c20fbe026af6af8152c.tar.bz2
Split ITRON semaphore manager into multiple files.
Diffstat (limited to 'c/src/exec/itron/src/sig_sem.c')
-rw-r--r--c/src/exec/itron/src/sig_sem.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/c/src/exec/itron/src/sig_sem.c b/c/src/exec/itron/src/sig_sem.c
new file mode 100644
index 0000000000..bde5d9b89f
--- /dev/null
+++ b/c/src/exec/itron/src/sig_sem.c
@@ -0,0 +1,49 @@
+/*
+ * 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$
+ */
+
+#include <itron.h>
+
+#include <rtems/itron/semaphore.h>
+#include <rtems/itron/task.h>
+#include <rtems/score/tod.h>
+
+/*
+ * 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;
+}