diff gsm-fw/gpf/osl/os_sem_fl.c @ 441:b23743555ca8

OSL: os_sem_fl.c started
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Mon, 23 Jun 2014 00:23:49 +0000
parents
children 0dbc1795ff42
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/gpf/osl/os_sem_fl.c	Mon Jun 23 00:23:49 2014 +0000
@@ -0,0 +1,45 @@
+/*
+ * This C module is a reconstruction based on the disassembly of
+ * os_sem.obj in frame_na7_db_fl.lib from the Leonardo package.
+ */
+
+/* set of included headers from COFF symtab: */
+#include <stdio.h>
+#include <string.h>
+#include "gpfconf.h"	/* FreeCalypso addition */
+#include "../../nucleus/nucleus.h"
+#include "typedefs.h"
+#include "os.h"
+#include "gdi.h"
+#include "os_types.h"
+#include "os_glob.h"
+
+extern T_OS_SEM_TABLE_ENTRY SemTable[];
+
+static NU_SEMAPHORE SemSemCB;
+
+static int
+os_GetSemaphoreEntry(USHORT Index, OS_HANDLE *Handle)
+{
+	static USHORT Idx;
+
+	if (Index == FIRST_ENTRY)
+		Idx = 0;
+	if (Index == FIRST_ENTRY || Index == NEXT_ENTRY) {
+		for (;;) {
+			Idx++;
+			if (Idx > MaxSemaphores)
+				return(OS_ERROR);
+			if (SemTable[Idx].Name[0])
+				break;
+		}
+	} else
+		Idx = Index;
+	if (Idx > MaxSemaphores)
+		return(OS_ERROR);
+	if (SemTable[Idx].Name[0]) {
+		*Handle = Idx;
+		return(OS_OK);
+	} else
+		return(OS_ERROR);
+}