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