FreeCalypso > hg > freecalypso-sw
view gsm-fw/gpf/osl/os_com_fl.c @ 349:a163da322bc5
OSL: os_com_fl.c started
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Thu, 08 May 2014 05:47:38 +0000 |
parents | |
children | 5bc6a8f8b4a8 |
line wrap: on
line source
/* * This C module is a reconstruction based on the disassembly of * os_com.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" typedef unsigned char u_char; extern T_OS_COM_TABLE_ENTRY ComTable[]; static NU_SEMAPHORE ComSemCB; static USHORT entry = 0; static int os_GetQueueEntry(USHORT Index, OS_HANDLE *Handle) { static USHORT Idx; if (Index == FIRST_ENTRY) Idx = 0; if (Index == FIRST_ENTRY || Index == NEXT_ENTRY) { while (++Idx <= MaxCommunications && !ComTable[Idx].Name[0]) ; } else Idx = Index; if (Idx <= MaxCommunications && ComTable[Idx].Name[0]) { *Handle = Idx; return(0); } else return(-1); } GLOBAL LONG os_QueueInformation(USHORT Index, char *Buffer) { OS_HANDLE Handle; T_OS_COM_TABLE_ENTRY *ent; UNSIGNED Used; OPTION SuspendType; UNSIGNED TasksWaiting; NU_TASK *First; CHAR Name[NU_MAX_NAME]; if (os_GetQueueEntry(Index, &Handle) < 0) return(OS_ERROR); ent = ComTable + Handle; if (NU_Semaphore_Information(&ent->UsedSemCB, Name, &Used, &SuspendType, &TasksWaiting, &First) != NU_SUCCESS) return(OS_ERROR); sprintf(Buffer, "Name:%s Startadr:%lx Entries:%d Used:%ld MaxUsed:%d", ent->Name, (ULONG)ent->pQueueMemory, ent->Entries, (LONG)Used, ent->MaxUsed); return(OS_OK); }