FreeCalypso > hg > fc-selenite
annotate src/gpf/osl/os_evt.c @ 216:2be687f4476c default tip
l1_init.c: sync with Tourmaline: L1 recovery ABB init fix
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 31 Oct 2022 01:23:14 +0000 |
parents | 8b2a9a374324 |
children |
rev | line source |
---|---|
6
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This C module is a reconstruction based on the disassembly of |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * os_evt.obj in frame_na7_db_fl.lib from the Leonardo package. |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 /* set of included headers from COFF symtab: */ |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <string.h> |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include "gpfconf.h" /* FreeCalypso addition */ |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include "../../nucleus/nucleus.h" |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include "typedefs.h" |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include "os.h" |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include "gdi.h" |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include "os_types.h" |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #include "os_glob.h" |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 extern T_OS_EVTGRP_TABLE_ENTRY EvtGrpTable[]; |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 GLOBAL LONG |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 os_SetEvents(OS_HANDLE evt_grp_handle, unsigned event_flags) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 { |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 if (!EvtGrpTable[evt_grp_handle].Name[0]) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 if (NU_Set_Events(&EvtGrpTable[evt_grp_handle].EvtGrp, event_flags, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 NU_OR) == NU_SUCCESS) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 return(OS_OK); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 else |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 } |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 GLOBAL LONG |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 os_RetrieveEvents(OS_HANDLE evt_grp_handle, unsigned event_flags, char option, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 unsigned *retrieved_events, unsigned suspend) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 { |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 if (!EvtGrpTable[evt_grp_handle].Name[0]) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 if (NU_Retrieve_Events(&EvtGrpTable[evt_grp_handle].EvtGrp, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 event_flags, option, retrieved_events, suspend) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 == NU_SUCCESS) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 return(OS_OK); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 else |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 } |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 GLOBAL LONG |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 os_GetEventGroupHandle(char *evt_grp_name, OS_HANDLE *evt_grp_handle) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 { |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 int idx; |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 for (idx = 0; idx <= MaxEventGroups; idx++) { |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 if (!EvtGrpTable[idx].Name[0]) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 break; |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 if (!strncmp(EvtGrpTable[idx].Name, evt_grp_name, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 RESOURCE_NAMELEN)) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 break; |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 } |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 if (idx > MaxEventGroups || !EvtGrpTable[idx].Name[0]) { |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 *evt_grp_handle = -1; |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 } |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 *evt_grp_handle = idx; |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 return(OS_OK); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 } |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 GLOBAL LONG |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 os_EventGroupInformation(OS_HANDLE evt_grp_handle, char *Name, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 unsigned *mask_evt, unsigned *tasks_waiting, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 OS_HANDLE *first_task) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 { |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 if (!EvtGrpTable[evt_grp_handle].Name[0]) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 if (NU_Event_Group_Information(&EvtGrpTable[evt_grp_handle].EvtGrp, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 Name, mask_evt, tasks_waiting, |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 first_task) == NU_SUCCESS) |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 return(OS_OK); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 else |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 return(OS_ERROR); |
8b2a9a374324
src/gpf: addition of Magnetite src/gpf2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 } |