FreeCalypso > hg > freecalypso-citrine
comparison gpf/inc/os.h @ 0:75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 09 Jun 2016 00:02:41 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:75a11d740a02 |
---|---|
1 /* | |
2 +------------------------------------------------------------------------------ | |
3 | File: os.h | |
4 +------------------------------------------------------------------------------ | |
5 | Copyright 2002 Texas Instruments Berlin, AG | |
6 | All rights reserved. | |
7 | | |
8 | This file is confidential and a trade secret of Texas | |
9 | Instruments Berlin, AG | |
10 | The receipt of or possession of this file does not convey | |
11 | any rights to reproduce or disclose its contents or to | |
12 | manufacture, use, or sell anything it may describe, in | |
13 | whole, or in part, without the specific written consent of | |
14 | Texas Instruments Berlin, AG. | |
15 +----------------------------------------------------------------------------- | |
16 | Purpose : Definitions for the OS adaptation layer. | |
17 +----------------------------------------------------------------------------- | |
18 */ | |
19 | |
20 #ifndef __OS_H__ | |
21 #define __OS_H__ | |
22 | |
23 #include "gpfconf.h" | |
24 #include "os_const.h" | |
25 | |
26 /*==== CONSTANTS ===================================================*/ | |
27 typedef int OS_HANDLE; | |
28 typedef BOOL OS_INT_STATE; | |
29 typedef ULONG OS_TIME; | |
30 typedef ULONG OS_TICK; | |
31 | |
32 #define OS_NOTASK 0 | |
33 | |
34 #define FIRST_ENTRY 0xff | |
35 #define NEXT_ENTRY 0xfe | |
36 | |
37 #define OS_EVENT 0x1 | |
38 #define OS_NO_EVENT 0x0 | |
39 /* | |
40 * pattern to initialize task/osisr stacks | |
41 */ | |
42 #define INITIAL_STACK_VALUE 0xfe | |
43 | |
44 /* | |
45 * constants to access the object information functions | |
46 */ | |
47 #define OS_OBJSYS 0 | |
48 #define OS_OBJTASK 1 | |
49 #define OS_OBJQUEUE 2 | |
50 #define OS_OBJPARTITIONGROUP 3 | |
51 #define OS_OBJMEMORYPOOL 4 | |
52 #define OS_OBJTIMER 5 | |
53 #define OS_OBJSEMAPHORE 6 | |
54 | |
55 /* | |
56 * return values | |
57 */ | |
58 #define OS_OK 0 | |
59 #define OS_WAITED 1 | |
60 #define OS_NEW_PROCESS 2 | |
61 #define OS_PARTITION_FREE 3 | |
62 #define OS_ALLOCATED_BIGGER 4 | |
63 #define OS_ERROR (-1) | |
64 #define OS_TIMEOUT (-2) | |
65 #define OS_PARTITION_GUARD_PATTERN_DESTROYED (-3) | |
66 #define OS_INVALID_QUEUE (-4) | |
67 | |
68 /* | |
69 * message priorities | |
70 */ | |
71 #define OS_NORMAL 1 | |
72 #define OS_URGENT 2 | |
73 #define OS_MIN_PRIORITY OS_NORMAL | |
74 #define OS_MAX_PRIORITY OS_URGENT | |
75 | |
76 /* | |
77 * OS ISR priority range | |
78 */ | |
79 #define OS_ISR_MIN_PRIO 0 | |
80 #define OS_ISR_MAX_PRIO 2 | |
81 | |
82 /* | |
83 * flags | |
84 */ | |
85 #define OS_QFPARTITION 0x01 | |
86 | |
87 /* | |
88 * error codes | |
89 */ | |
90 #define OS_SYST_ERR 0x8000 | |
91 #define OS_SYST_ERR_QUEUE_CREATE 0x8001 | |
92 #define OS_SYST_ERR_MAX_TIMER 0x8002 | |
93 #define OS_SYST_ERR_MAX_TASK 0x8003 | |
94 #define OS_SYST_ERR_STACK_OVERFLOW 0x8004 | |
95 #define OS_SYST_ERR_PCB_PATTERN 0x8005 | |
96 #define OS_SYST_ERR_NO_PARTITION 0x8006 | |
97 #define OS_SYST_ERR_STR_TOO_LONG 0x8007 | |
98 #define OS_SYST_ERR_OVERSIZE 0x8008 | |
99 #define OS_SYST_ERR_TASK_TIMER 0x8009 | |
100 #define OS_SYST_ERR_SIMUL_TIMER 0x800A | |
101 #define OS_SYST_ERR_QUEUE_FULL 0x800B | |
102 #define OS_SYST_ERR_MAX_SEMA 0x800C | |
103 #define OS_SYST_ERR_NO_MEMORY 0x800D | |
104 #define OS_SYST_ERR_BIG_PARTITION 0x800E | |
105 | |
106 /* | |
107 * warning codes | |
108 */ | |
109 #define OS_SYST_WRN 0x0000 | |
110 #define OS_SYST_WRN_WAIT_PARTITION 0x0001 | |
111 #define OS_SYST_WRN_WAIT_QUEUE 0x0002 | |
112 #define OS_SYST_WRN_BIG_PARTITION 0x0003 | |
113 #define OS_SYST_WRN_MULTIPLE_FREE 0x0004 | |
114 #define OS_SYST_WRN_REQ_TRUNCATED 0x0004 | |
115 #define OS_SYST_WRN_FREE_FAILED 0x0005 | |
116 | |
117 /*==== TYPES =======================================================*/ | |
118 | |
119 typedef struct | |
120 { | |
121 USHORT flags; | |
122 USHORT data16; | |
123 ULONG data32; | |
124 #ifdef _TOOLS_ | |
125 ULONG len; | |
126 #endif | |
127 ULONG time; | |
128 LONG e_id; | |
129 T_VOID_STRUCT * ptr; | |
130 } OS_QDATA; | |
131 | |
132 /*==== PROTOTYPES ==================================================*/ | |
133 | |
134 /* Task API */ | |
135 GLOBAL LONG os_CreateTask (OS_HANDLE Caller, char *Name, void (*TaskEntry)(OS_HANDLE, ULONG), ULONG StackSize, | |
136 USHORT Priority, OS_HANDLE *TaskHandle, OS_HANDLE MemPoolHandle); | |
137 GLOBAL LONG os_DestroyTask (OS_HANDLE Caller, OS_HANDLE TaskHandle); | |
138 GLOBAL LONG os_StartTask (OS_HANDLE Caller, OS_HANDLE TaskHandle, ULONG Value); | |
139 GLOBAL LONG os_StopTask (OS_HANDLE Caller, OS_HANDLE TaskHandle); | |
140 GLOBAL LONG os_SuspendTask (OS_HANDLE Caller, ULONG Time); | |
141 GLOBAL LONG os_DeferTask (OS_HANDLE task_handle, OS_TIME time); | |
142 GLOBAL LONG os_ResumeTask (OS_HANDLE task_handle); | |
143 GLOBAL LONG os_Relinquish (void); | |
144 GLOBAL LONG os_GetTaskName (OS_HANDLE Caller, OS_HANDLE TaskHandle, char * Name); | |
145 GLOBAL LONG os_GetTaskHandle (OS_HANDLE Caller, char * Name, OS_HANDLE *TaskHandle); | |
146 GLOBAL LONG os_TaskInformation (USHORT Handle, char *Buffer); | |
147 GLOBAL LONG os_ProInit (void); | |
148 GLOBAL LONG os_ChangePreemption (char preempt); | |
149 GLOBAL OS_HANDLE os_MyHandle (void); | |
150 #ifdef _NUCLEUS_ | |
151 GLOBAL LONG os_CheckTaskStack (OS_HANDLE Handle); | |
152 /* Task internal */ | |
153 GLOBAL LONG os_GetTaskData (OS_HANDLE Handle, unsigned int **tcb, unsigned char **stackbegin, unsigned char **stackend ); | |
154 GLOBAL unsigned char os_GetTaskState (OS_HANDLE Caller, OS_HANDLE Handle); | |
155 #endif | |
156 | |
157 /* Queue API */ | |
158 GLOBAL LONG os_CreateQueue (OS_HANDLE Caller, OS_HANDLE ComHandle, char *Name, USHORT Entries, | |
159 OS_HANDLE *ActHandle, OS_HANDLE MemPoolHandle ); | |
160 GLOBAL LONG os_DestroyQueue (OS_HANDLE Caller, OS_HANDLE ComHandle ); | |
161 GLOBAL LONG os_OpenQueue (OS_HANDLE Caller, char *Name, OS_HANDLE *ComHandle); | |
162 GLOBAL LONG os_CloseQueue (OS_HANDLE Caller, OS_HANDLE ComHandle); | |
163 GLOBAL LONG os_SendToQueue (OS_HANDLE Caller, OS_HANDLE ComHandle, USHORT Priority, | |
164 ULONG Suspend, OS_QDATA *Msg ); | |
165 GLOBAL LONG os_ReceiveFromQueue (OS_HANDLE Caller, OS_HANDLE ComHandle, OS_QDATA *msg, ULONG Timeout ); | |
166 GLOBAL LONG os_GetQueueName (OS_HANDLE Caller, OS_HANDLE ComHandle, char * Name); | |
167 GLOBAL LONG os_GetQueueHandle (OS_HANDLE Caller, char *Name, OS_HANDLE *ComHandle); | |
168 GLOBAL LONG os_QueueInformation (USHORT Handle, char *Buffer); | |
169 GLOBAL LONG os_ComInit (void); | |
170 /* Queue internal */ | |
171 #ifdef _NUCLEUS_ | |
172 GLOBAL LONG os_GetQueueState (OS_HANDLE Caller, OS_HANDLE Handle, ULONG *Used, ULONG *Free); | |
173 GLOBAL unsigned char *os_FindSuspendingQueue (unsigned int *tcb); | |
174 GLOBAL LONG os_GetQueueData (OS_HANDLE Caller, OS_HANDLE Handle, USHORT Index, | |
175 USHORT *Type, ULONG *opc, ULONG *ptr, ULONG *time ); | |
176 #endif | |
177 #ifdef _TOOLS_ | |
178 extern LONG os_create_extq (const char* name, OS_HANDLE* comhandle); | |
179 extern LONG os_destroy_extq (const char* name); | |
180 #endif /* _TOOLS_ */ | |
181 | |
182 /* Memory API */ | |
183 GLOBAL LONG os_CreatePartitionPool (OS_HANDLE Caller, char *GroupName, void *Addr, USHORT Num, ULONG Size, | |
184 OS_HANDLE *GroupHandle); | |
185 GLOBAL LONG os_CreatePartitionPool_fixed_pool_size (OS_HANDLE TaskHandle, char *GroupName, void *Addr, USHORT PoolSize, | |
186 ULONG PartitionSize, OS_HANDLE *GroupHandle, ULONG *NumCreated); | |
187 GLOBAL LONG os_AllocatePartition (OS_HANDLE Caller, T_VOID_STRUCT **Buffer, ULONG Size, | |
188 ULONG Suspend, OS_HANDLE GroupHandle); | |
189 GLOBAL LONG os_DeallocatePartition (OS_HANDLE Caller, T_VOID_STRUCT *Buffer); | |
190 GLOBAL LONG os_CreateMemoryPool (OS_HANDLE Caller, char *Name, void *Addr, ULONG PoolSize, | |
191 OS_HANDLE *PoolHandle); | |
192 GLOBAL LONG os_AllocateMemory (OS_HANDLE Caller, T_VOID_STRUCT **Buffer, ULONG Size, | |
193 ULONG Suspend, OS_HANDLE PoolHandle); | |
194 GLOBAL LONG os_DeallocateMemory (OS_HANDLE Caller, T_VOID_STRUCT *Buffer); | |
195 GLOBAL LONG os_PartitionInformation (USHORT Handle, char *Buffer); | |
196 GLOBAL LONG os_MemoryInformation (USHORT Handle, char *Buffer); | |
197 GLOBAL LONG os_MemInit (void); | |
198 GLOBAL LONG os_SetPoolHandles (OS_HANDLE ext_pool_handle, OS_HANDLE int_pool_handle); | |
199 GLOBAL LONG os_GetPartitionGroupHandle(OS_HANDLE Caller, char *Name, OS_HANDLE *GroupHandle); | |
200 | |
201 GLOBAL LONG os_GetPartitionPoolStatus (ULONG size, OS_HANDLE gr_hndl, USHORT *free, USHORT *alloc); | |
202 /* Memory internal */ | |
203 GLOBAL LONG os_is_valid_partition (T_VOID_STRUCT *Buffer); | |
204 #ifdef _NUCLEUS_ | |
205 GLOBAL LONG os_PartitionCheck (ULONG *ptr); | |
206 GLOBAL const ULONG *os_GetPrimpoolCB (int grp,int id); | |
207 #endif | |
208 | |
209 /* Timer API */ | |
210 GLOBAL LONG os_CreateTimer (OS_HANDLE TaskHandle, void(*TimeoutProc)(OS_HANDLE,OS_HANDLE,USHORT), | |
211 OS_HANDLE *TimerHandle, OS_HANDLE MemPoolHandle); | |
212 GLOBAL LONG os_DestroyTimer (OS_HANDLE TaskHandle, OS_HANDLE TimerHandle); | |
213 GLOBAL LONG os_StartTimer (OS_HANDLE TaskHandle, OS_HANDLE TimerHandle, USHORT Index, | |
214 OS_TIME InitialTime, OS_TIME RescheduleTime ); | |
215 GLOBAL LONG os_StopTimer (OS_HANDLE TaskHandle, OS_HANDLE TimerHandle); | |
216 GLOBAL LONG os_QueryTimer (OS_HANDLE TaskHandle, OS_HANDLE TimerHandle, OS_TIME *RemainingTime); | |
217 GLOBAL LONG os_TimerInformation (USHORT Handle, char *Buffer); | |
218 GLOBAL LONG os_TimInit (void); | |
219 GLOBAL LONG os_set_tick (int os_system_tick); | |
220 GLOBAL LONG os_InactivityTicks (int *next_event, OS_TICK *next_event_ticks); | |
221 GLOBAL LONG os_IncrementTick (OS_TICK ticks); | |
222 GLOBAL LONG os_GetScheduleCount (OS_HANDLE task_handle, int * schedule_count); | |
223 GLOBAL LONG os_RecoverTick (OS_TICK ticks); | |
224 | |
225 /* Semaphore API */ | |
226 GLOBAL LONG os_CreateSemaphore (OS_HANDLE TaskHandle, char *Name, USHORT Count, | |
227 OS_HANDLE *Semhandle, OS_HANDLE MemPoolHandle); | |
228 GLOBAL LONG os_DestroySemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle); | |
229 GLOBAL LONG os_ResetSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle, USHORT Count); | |
230 GLOBAL LONG os_OpenSemaphore (OS_HANDLE TaskHandle, char *Name, OS_HANDLE *SemHandle); | |
231 GLOBAL LONG os_CloseSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle); | |
232 GLOBAL LONG os_ObtainSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle, ULONG Timeout); | |
233 GLOBAL LONG os_ReleaseSemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle); | |
234 GLOBAL LONG os_QuerySemaphore (OS_HANDLE TaskHandle, OS_HANDLE SemHandle, USHORT *Count); | |
235 GLOBAL LONG os_SemaphoreInformation (USHORT Handle, char *Buffer); | |
236 GLOBAL LONG os_SemInit (void); | |
237 /* Semaphore internal */ | |
238 #ifdef _NUCLEUS_ | |
239 GLOBAL unsigned char *os_FindSuspendingSema (unsigned int *tcb); | |
240 #endif | |
241 | |
242 /* Interrupt API */ | |
243 GLOBAL LONG os_CreateOSISR (char *name, void (*OSISR_entry)(void), int stacksize, int priority, | |
244 int flags, OS_HANDLE *osisr_handle ); | |
245 GLOBAL LONG os_DeleteOSISR (OS_HANDLE osisr_handle); | |
246 GLOBAL LONG os_ActivateOSISR (OS_HANDLE osisr_handle); | |
247 GLOBAL LONG os_SetInterruptState (OS_INT_STATE new_state, OS_INT_STATE *old_state); | |
248 GLOBAL LONG os_EnableInterrupts (OS_INT_STATE *old_state); | |
249 GLOBAL LONG os_DisableInterrupts (OS_INT_STATE *old_state); | |
250 GLOBAL LONG os_isr_init (void); | |
251 | |
252 /* Event group API */ | |
253 GLOBAL LONG os_CreateEventGroup (char *evt_grp_name, OS_HANDLE *evt_grp_handle); | |
254 GLOBAL LONG os_DeleteEventGroup (OS_HANDLE evt_grp_handle); | |
255 GLOBAL LONG os_EventGroupInformation (OS_HANDLE evt_grp_handle, char *Name, unsigned* mask_evt, unsigned* tasks_waiting, OS_HANDLE* first_task); | |
256 GLOBAL LONG os_SetEvents (OS_HANDLE evt_grp_handle, unsigned event_flags); | |
257 GLOBAL LONG os_ClearEvents (OS_HANDLE evt_grp_handle, unsigned event_flags); | |
258 GLOBAL LONG os_RetrieveEvents (OS_HANDLE evt_grp_handle, unsigned event_flags, char option, unsigned* retrieved_events, unsigned suspend); | |
259 GLOBAL LONG os_EvGrpInit (void); | |
260 GLOBAL LONG os_GetEventGroupHandle (char *evt_grp_name, OS_HANDLE *evt_grp_handle); | |
261 | |
262 /* Miscellaneous */ | |
263 GLOBAL LONG os_GetTime (OS_HANDLE TaskHandle, OS_TIME *Time); | |
264 GLOBAL LONG os_Initialize (void); | |
265 GLOBAL LONG os_ObjectInformation (OS_HANDLE Caller, USHORT Id, USHORT Handle, USHORT len, void *Buffer); | |
266 void os_SystemError (OS_HANDLE Caller, USHORT cause, char *buffer ); | |
267 LONG os_dar_register (const void *dar_properties); | |
268 #ifdef _NUCLEUS_ | |
269 LONG os_dar_set_filter (void); | |
270 LONG os_read_dar_ffs_data (USHORT entry, char *buffer, USHORT len); | |
271 #endif | |
272 #if defined (_NUCLEUS_) && defined (_TARGET_) | |
273 #include "gdi.h" | |
274 GLOBAL LONG os_CreateCallback (void); | |
275 GLOBAL LONG os_ExecuteCallback (OS_HANDLE Caller, void (*Callback)(T_DRV_SIGNAL*), T_DRV_SIGNAL *Signal); | |
276 #endif | |
277 #ifdef CTB | |
278 GLOBAL void os_Tick (void); | |
279 GLOBAL void os_StartTicking (void); | |
280 GLOBAL void os_StopTicking (void); | |
281 GLOBAL ULONG os_GetProcessId (void); | |
282 #endif | |
283 | |
284 /*==== END OF OS.H =================================================*/ | |
285 #endif |