summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/src/del_mbx.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/itron/src/del_mbx.c')
-rw-r--r--c/src/exec/itron/src/del_mbx.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/c/src/exec/itron/src/del_mbx.c b/c/src/exec/itron/src/del_mbx.c
new file mode 100644
index 0000000000..9006e5f3b4
--- /dev/null
+++ b/c/src/exec/itron/src/del_mbx.c
@@ -0,0 +1,61 @@
+/*
+ * ITRON 3.0 Mailbox Manager
+ *
+ * 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/mbox.h>
+#include <rtems/itron/task.h>
+
+/*
+ * del_mbx - Delete Mailbox
+ *
+ *
+ * ------Parameters--------------
+ * ID mbxid The Mailbox's ID
+ * ------------------------------
+ *
+ * -----Return Parameters-------
+ * ER ercd Itron Error Code
+ * -----------------------------
+ *
+ * -----C Language Interface----
+ * ER ercd = del_mbx(ID mbxid);
+ * -----------------------------
+ *
+ */
+
+ER del_mbx(
+ ID mbxid
+)
+{
+ register ITRON_Mailbox_Control *the_mailbox;
+ Objects_Locations location;
+
+ the_mailbox= _ITRON_Mailbox_Get( mbxid, &location );
+ switch ( location ) {
+ case OBJECTS_ERROR:
+ case OBJECTS_REMOTE:
+ return _ITRON_Mailbox_Clarify_get_id_error( mbxid );
+
+ case OBJECTS_LOCAL:
+ _Objects_Close( &_ITRON_Mailbox_Information, &the_mailbox->Object );
+
+ _CORE_message_queue_Close(
+ &the_mailbox->message_queue,
+ NULL, /* Multiprocessing not supported */
+ CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED
+ );
+
+ _ITRON_Mailbox_Free(the_mailbox);
+ break;
+ }
+
+ _ITRON_return_errorno( E_OK );
+}