FreeCalypso > hg > fc-magnetite
annotate src/gpf2/osl/os_com_fl.c @ 589:9b81b68e8e64
armio.c: SE J100 GPIO config changed to new knowledge from disassembly
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 14 Mar 2019 23:51:42 +0000 | 
| parents | ff91db8c9eb8 | 
| children | 
| rev | line source | 
|---|---|
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This C module is a reconstruction based on the disassembly of | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * os_com.obj in frame_na7_db_fl.lib from the Leonardo package. | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 */ | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 /* set of included headers from COFF symtab: */ | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include <stdio.h> | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 #include <string.h> | 
| 488 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 9 #include "nucleus.h" | 
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 #include "typedefs.h" | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 #include "os.h" | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 #include "gdi.h" | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 #include "os_types.h" | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 #include "os_glob.h" | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 extern T_OS_COM_TABLE_ENTRY ComTable[]; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 static NU_SEMAPHORE ComSemCB; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 static int | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 os_GetQueueEntry(USHORT Index, OS_HANDLE *Handle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 static USHORT Idx; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 if (Index == FIRST_ENTRY) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 Idx = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 if (Index == FIRST_ENTRY || Index == NEXT_ENTRY) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 while (++Idx <= MaxCommunications && !ComTable[Idx].Name[0]) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 ; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 } else | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 Idx = Index; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 if (Idx <= MaxCommunications && ComTable[Idx].Name[0]) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 *Handle = Idx; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 return(0); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 } else | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 return(-1); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 os_QueueInformation(USHORT Index, char *Buffer) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 OS_HANDLE Handle; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 T_OS_COM_TABLE_ENTRY *ent; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 UNSIGNED Used; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 OPTION SuspendType; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 UNSIGNED TasksWaiting; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 NU_TASK *First; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 CHAR Name[NU_MAX_NAME]; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 if (os_GetQueueEntry(Index, &Handle) < 0) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 ent = ComTable + Handle; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 if (NU_Semaphore_Information(&ent->UsedSemCB, Name, &Used, &SuspendType, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 &TasksWaiting, &First) != NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 sprintf(Buffer, "Name:%s Startadr:%lx Entries:%d Used:%ld MaxUsed:%d", | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 ent->Name, (ULONG)ent->pQueueMemory, ent->Entries, (LONG)Used, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 ent->MaxUsed); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 os_OpenQueue(OS_HANDLE TaskHandle, char *Name, OS_HANDLE *ComHandle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 USHORT i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 if (!Name) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 for (i = 1; i <= MaxCommunications; i++) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 if (ComTable[i].Name[0] && | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 !strncmp(ComTable[i].Name, Name, RESOURCE_NAMELEN - 1)) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 *ComHandle = i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 os_GetQueueState(OS_HANDLE Caller, OS_HANDLE Handle, ULONG *Used, ULONG *Free) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 if (ComTable[Handle].Name[0]) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 *Used = ComTable[Handle].UsedSemCB.sm_semaphore_count; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 *Free = ComTable[Handle].FreeSemCB.sm_semaphore_count; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 } else | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 os_GetQueueName(OS_HANDLE Caller, OS_HANDLE ComHandle, char *Name) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 if (ComHandle > MaxCommunications) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 if (!ComTable[ComHandle].Name[0]) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 strcpy(Name, ComTable[ComHandle].Name); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 os_GetQueueHandle(OS_HANDLE Caller, char *Name, OS_HANDLE *ComHandle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 USHORT i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 for (i = 1; i <= MaxCommunications; i++) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 if (ComTable[i].Name[0] && | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 !strncmp(Name, ComTable[i].Name, RESOURCE_NAMELEN - 1)) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 *ComHandle = i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 os_GetQueueData(OS_HANDLE Caller, OS_HANDLE Handle, USHORT Index, USHORT *Type, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 ULONG *opc, ULONG *ptr, ULONG *time) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 static USHORT entry; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 static T_QDATA_ELEMENT *p; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 if (!ComTable[Handle].Name[0]) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 if (Index == FIRST_ENTRY) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 *Type = ComTable[Handle].current_msg.type; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 *opc = ComTable[Handle].current_msg.opc; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 *time = ComTable[Handle].current_msg.time; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 *ptr = (ULONG) ComTable[Handle].current_msg.ptr; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 p = ComTable[Handle].pQueueMemory; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 entry = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 if (entry >= ComTable[Handle].Entries) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 entry++; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 *Type = p->Data.data16; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 *ptr = (ULONG) p->Data.ptr; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 *opc = p->Data.data32; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 *time = p->Data.time; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 p++; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 GLOBAL unsigned char * | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 os_FindSuspendingQueue(unsigned int *tcb) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 USHORT i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 SM_SUSPEND *susp, *susp2; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 for (i = 1; i <= MaxCommunications; i++) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 if (!ComTable[i].Name[0]) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 continue; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 if (susp = ComTable[i].FreeSemCB.sm_suspension_list) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 if (susp->sm_suspended_task == (NU_TASK*)tcb) | 
| 488 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 154 return((unsigned char *) | 
| 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 155 ComTable[i].FreeSemCB.sm_name + 1); | 
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 susp = (SM_SUSPEND *) susp->sm_suspend_link.cs_next; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 for (susp2 = susp; ; ) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 if (susp2->sm_suspended_task == (NU_TASK*)tcb) | 
| 488 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 159 return((unsigned char *) | 
| 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 160 ComTable[i].FreeSemCB.sm_name + 1); | 
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 susp2 = (SM_SUSPEND *) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 susp2->sm_suspend_link.cs_next; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 if (susp2 == susp) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 break; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 if (susp = ComTable[i].UsedSemCB.sm_suspension_list) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 if (susp->sm_suspended_task == (NU_TASK*)tcb) | 
| 488 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 169 return((unsigned char *) | 
| 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 170 ComTable[i].UsedSemCB.sm_name + 1); | 
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 susp = (SM_SUSPEND *) susp->sm_suspend_link.cs_next; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 for (susp2 = susp; ; ) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 if (susp2->sm_suspended_task == (NU_TASK*)tcb) | 
| 488 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 174 return((unsigned char *) | 
| 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 175 ComTable[i].UsedSemCB.sm_name + 1); | 
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 susp2 = (SM_SUSPEND *) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 susp2->sm_suspend_link.cs_next; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 if (susp2 == susp) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 break; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 return(0); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 os_DestroyQueue(OS_HANDLE TaskHandle, OS_HANDLE ComHandle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 STATUS sts; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 sts = NU_Obtain_Semaphore(&ComSemCB, NU_SUSPEND); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 if (NU_Delete_Semaphore(&ComTable[ComHandle].FreeSemCB) != NU_SUCCESS) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 return_error: if (sts == NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 NU_Release_Semaphore(&ComSemCB); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 if (NU_Delete_Semaphore(&ComTable[ComHandle].UsedSemCB) != NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 goto return_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 if (os_DeallocateMemory(TaskHandle, ComTable[ComHandle].QueueData) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 == OS_ERROR) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 goto return_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 ComTable[ComHandle].Name[0] = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 if (sts == NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 NU_Release_Semaphore(&ComSemCB); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 static short | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 InitQueueMemory(OS_HANDLE TaskHandle, OS_HANDLE ComHandle, USHORT Entries, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 OS_HANDLE MemPoolHandle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 T_QDATA_ELEMENT *pElem; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 OS_QDATA **ptrs; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 USHORT i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 if (os_AllocateMemory(TaskHandle, &ComTable[ComHandle].QueueData, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 sizeof(T_QDATA_ELEMENT) * Entries + | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 sizeof(OS_QDATA *) * (Entries + 1) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 * OS_MAX_PRIORITY, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 0, MemPoolHandle) == OS_TIMEOUT) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 pElem = (T_QDATA_ELEMENT *) ComTable[ComHandle].QueueData; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 ComTable[ComHandle].pQueueMemory = pElem; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 ComTable[ComHandle].pFreeElement = pElem; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 for (i = 0; i < Entries; i++) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 if (i < Entries - 1) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 pElem->pNext = pElem + 1; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 else | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 pElem->pNext = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 pElem++; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 ptrs = (OS_QDATA **) pElem; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 for (i = 0; i < OS_MAX_PRIORITY; i++) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 ComTable[ComHandle].Queue[i].pStart = ptrs; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 ComTable[ComHandle].Queue[i].pRead = ptrs; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 ComTable[ComHandle].Queue[i].pWrite = ptrs; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 ptrs += Entries + 1; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 os_CreateQueue(OS_HANDLE TaskHandle, OS_HANDLE ComHandle, char *Name, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 USHORT Entries, OS_HANDLE *ActHandle, OS_HANDLE MemPoolHandle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 STATUS sts; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 OS_HANDLE i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 char Buffer[RESOURCE_NAMELEN + 1]; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 if (os_OpenQueue(TaskHandle, Name, ActHandle) == OS_OK) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 if (!Entries) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 sts = NU_Obtain_Semaphore(&ComSemCB, NU_SUSPEND); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 if (!ComHandle) { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 for (i = 1; i <= MaxCommunications; i++) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 if (!ComTable[i].Name[0]) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 goto good_slot; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 release_sem_error: | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 if (sts == NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 NU_Release_Semaphore(&ComSemCB); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 } else { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 i = ComHandle; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 if (i > MaxCommunications) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 goto release_sem_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 if (ComTable[i].Name[0]) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 goto release_sem_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 good_slot: | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 if (InitQueueMemory(TaskHandle, i, Entries, MemPoolHandle) == OS_ERROR) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 goto release_sem_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 strncpy(Buffer + 1, Name, RESOURCE_NAMELEN - 1); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 Buffer[RESOURCE_NAMELEN] = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 Buffer[0] = 'U'; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 if (NU_Create_Semaphore(&ComTable[i].UsedSemCB, Buffer, 0, NU_PRIORITY) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 != NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 goto release_sem_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 Buffer[0] = 'F'; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 if (NU_Create_Semaphore(&ComTable[i].FreeSemCB, Buffer, Entries, | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 NU_PRIORITY) != NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 goto release_sem_error; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 strncpy(ComTable[i].Name, Name, RESOURCE_NAMELEN); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 ComTable[i].Name[RESOURCE_NAMELEN-1] = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 *ActHandle = i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 ComTable[i].Entries = Entries; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 ComTable[i].MaxUsed = 0; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 if (sts == NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 NU_Release_Semaphore(&ComSemCB); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 os_ComInit(void) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 USHORT i; | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 if (NU_Create_Semaphore(&ComSemCB, "COMSEM", 1, NU_PRIORITY) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 != NU_SUCCESS) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 return(OS_ERROR); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 for (i = 1; i <= MaxCommunications; i++) | 
| 488 
ff91db8c9eb8
OSL: os_com_fl.c compiles
 Mychaela Falconia <falcon@freecalypso.org> parents: 
487diff
changeset | 302 memset(&ComTable[i], 0, sizeof(T_OS_COM_TABLE_ENTRY)); | 
| 487 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 } | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 GLOBAL LONG | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 os_CloseQueue(OS_HANDLE TaskHandle, OS_HANDLE ComHandle) | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 { | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 return(OS_OK); | 
| 
91e8dac34ada
src/gpf2/osl: initial import from old freecalypso-sw tree
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 } | 
