FreeCalypso > hg > ffs-editor
comparison src/cs/riviera/rvm/rvm_i.h @ 0:92470e5d0b9e
src: partial import from FC Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 15 May 2020 01:28:16 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92470e5d0b9e |
---|---|
1 | |
2 /****************************************************************************/ | |
3 /* */ | |
4 /* Name rvm_i.h */ | |
5 /* */ | |
6 /* Function this file contains the definitions of internal data */ | |
7 /* structures for the RVM */ | |
8 /* */ | |
9 /* */ | |
10 /* Version 0.1 */ | |
11 /* */ | |
12 /* Date Modification */ | |
13 /* ------------------------------------ */ | |
14 /* 20/01/2000 Create */ | |
15 /* */ | |
16 /* Author David Lamy-Charrier (dlamy@tif.ti.com) */ | |
17 /* */ | |
18 /* (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved*/ | |
19 /****************************************************************************/ | |
20 | |
21 #ifndef __RVM_I_H_ | |
22 #define __RVM_I_H_ | |
23 | |
24 #ifndef _WINDOWS | |
25 #include "config/rv.cfg" | |
26 #include "config/debug.cfg" | |
27 #endif | |
28 | |
29 #include "rvf/rvf_api.h" | |
30 #include "rvm/rvm_api.h" | |
31 #include "rvm/rvm_gen.h" | |
32 //#include "rvf/rvf_pool_size.h" | |
33 #include "rvm/rvm_pool_size.h" | |
34 //#include "rv_general.h" //?? | |
35 | |
36 | |
37 /* MSG MUST BE VERIFIED */ | |
38 #define RVM_MSG_OFFSET BUILD_MESSAGE_OFFSET(RVM_USE_ID) | |
39 | |
40 #define RVM_START_T2_MSG (RVM_MSG_OFFSET | 0x001) | |
41 #define RVM_RT_MOD_YIELD_T2_MSG (RVM_MSG_OFFSET | 0x002) | |
42 #define RVM_STOP_MSG (RVM_MSG_OFFSET | 0x003) | |
43 #define RVM_STOP_REQ_MSG (RVM_MSG_OFFSET | 0x004) | |
44 | |
45 | |
46 #define RVM_YIELD_T2_PS_TM 10 | |
47 #define RVM_YIELD_T2_PRI_MSG_CNT 10 | |
48 #define T_RVM_TASK_ID T_RVF_G_ADDR_ID //UINT8 | |
49 #define SYSTEM_TASK_MEM 204 | |
50 | |
51 #define MAX_GRPS MAX_HOSTING_TASKS | |
52 #define MAX_COMPOSITES MAX_PARASITES | |
53 | |
54 /* definitions related to the RVM as a RVF task */ | |
55 #define RVM_EXPECTED_EVENT RVF_TASK_MBOX_0_EVT_MASK | |
56 #define RVM_MAILBOX RVF_TASK_MBOX_0 | |
57 | |
58 #if (defined BLUETOOTH) || (TEST==1) | |
59 #define RVM_MAX_SWE_USING (5) /* max number of SW Entities using another one within a given appli */ | |
60 #else | |
61 #define RVM_MAX_SWE_USING (3) /* max number of SW Entities using another one within a given appli */ | |
62 #endif | |
63 | |
64 | |
65 #define RVM_INVALID_SWE_INDEX (0xff) | |
66 | |
67 extern T_RVF_MB_ID rvm_mem_bank; | |
68 extern T_RVF_MB_ID rvm_sys_mem_bank; | |
69 extern T_RVF_MB_ID rvm_timer_mem_bank; | |
70 extern T_RVF_MB_ID rvm_tm_notify_mem_bank; | |
71 extern T_RVF_MB_ID rvm_stack_mem_bank; | |
72 | |
73 /* parameters of mb in use */ | |
74 typedef struct | |
75 { T_RVF_MB_NAME mb_name; | |
76 T_RVF_MB_PARAM mb_initial_param; | |
77 }T_RVM_APPLI_MB_PARAMS; | |
78 | |
79 | |
80 #define RVM_INVALID_GROUP_INDEX (0xFFFF) | |
81 #define RVM_OWN_GROUP (0xFFFE) | |
82 | |
83 | |
84 /* list of possible event in the RVM */ | |
85 //#define RVM_START_APPLI (60000) | |
86 //#define RVM_STOP_APPLI (60001) | |
87 //#define RVM_ERROR (60002) | |
88 | |
89 | |
90 typedef enum { | |
91 SWE_NOT_STARTED = 0, | |
92 SWE_RUNNING = 1, | |
93 SWE_STOPPING = 2, | |
94 SWE_KILLED = 3 | |
95 }T_RVM_SWE_STATE; | |
96 | |
97 | |
98 /* structure of message */ | |
99 typedef struct { | |
100 T_RV_HDR header; | |
101 T_RV_RETURN_PATH rp; | |
102 UINT8 swe_num; | |
103 }T_RVM_MSG; | |
104 | |
105 | |
106 /* Information about each known SWE | |
107 This is static information and is built at RVM initialization */ | |
108 typedef struct | |
109 { | |
110 T_RVM_NAME swe_name; | |
111 T_RVM_USE_ID swe_use_id; | |
112 T_RVM_GET_INFO_FUNC swe_get_info; /* pointer to its get_info function */ | |
113 T_RVM_SWE_TYPE swe_type; /* type of the SWE */ | |
114 T_RVF_G_ADDR_ID swe_addr_id; /* unique address id of the SWE */ | |
115 UINT16 group_index; /* for type 2 SWE, index of the hosting group in the group array. */ | |
116 UINT16 swe_stack_size; /* size of the task stack */ | |
117 UINT8 swe_priority; /* priority of the SWE */ | |
118 T_RVM_SWE_STATE swe_state; /* state of the SWE */ | |
119 T_RVF_BUFFER* stack_ptr; /* pointer to the stack of the task */ | |
120 UINT8 nb_using_appli; /* nb of application which uses this SWE */ | |
121 UINT8 using_appli[RVM_MAX_SWE_USING]; /* pointer to each application which use this SWE */ | |
122 T_RV_RETURN_PATH swe_return_path; | |
123 T_RV_RETURN_PATH mmi_return_path; | |
124 }T_RVM_KNOWN_SWE; | |
125 | |
126 typedef struct | |
127 { T_RVM_SWE_STATE host_state; | |
128 UINT8 task_id; | |
129 UINT16 nb_hosted_swe; | |
130 UINT16 stack_size; | |
131 UINT8 task_priority; | |
132 } T_RVM_GROUP_INFO; /* DEPRECATED! */ | |
133 | |
134 | |
135 /* structure containing the SWE generic functions pointers */ | |
136 typedef struct | |
137 { | |
138 T_RVM_RETURN (* set_info) ( T_RVF_ADDR_ID addr_id, | |
139 T_RV_RETURN_PATH return_path[], | |
140 T_RVF_MB_ID bk_id_table[], | |
141 T_RVM_CB_FUNC call_back_error_ft); | |
142 T_RVM_RETURN (* init) (void); | |
143 T_RVM_RETURN (* start) (void); | |
144 T_RVM_RETURN (* handle_message) (T_RV_HDR * msg); | |
145 T_RVM_RETURN (* handle_timer) (T_RV_HDR * msg); | |
146 T_RVM_RETURN (* core) (void); | |
147 T_RVM_RETURN (* stop) (T_RV_HDR* hdr); | |
148 T_RVM_RETURN (* stop1) (void); | |
149 T_RVM_RETURN (* kill) (void); | |
150 } T_RVM_SWE_FUNCTIONS; | |
151 | |
152 /* Information about each processing SWE | |
153 This information is dynamic and lives during start or stop process only*/ | |
154 typedef struct _t_rvm_processing_swe | |
155 { | |
156 UINT8 swe_id; // From known SWE array index | |
157 T_RVM_SWE_TYPE swe_type; | |
158 UINT16 stack_size; | |
159 UINT8 priority; | |
160 UINT8 nb_requested_mb; | |
161 UINT8 nb_created_mb; | |
162 T_RVM_APPLI_MB_PARAMS swe_mem_bank[RVM_MAX_NB_MEM_BK]; | |
163 T_RVM_SWE_FUNCTIONS rvm_functions; | |
164 T_RVF_MB_ID bk_id_table[RVM_MAX_NB_MEM_BK]; | |
165 struct _t_rvm_processing_swe *next_swe; | |
166 } T_RVM_PROCESSING_SWE; | |
167 | |
168 typedef struct { | |
169 T_RV_HDR hdr; | |
170 UINT8 grp[MAX_PARASITES]; // to do ..... constant! | |
171 } T_RVM_START_T2_MSG; | |
172 | |
173 typedef struct { | |
174 T_RV_HDR header; | |
175 UINT8 swe_num; | |
176 T_RV_RETURN_PATH rp; | |
177 T_RVM_SWE_STATE status; | |
178 } T_RVM_STOP_MSG; | |
179 | |
180 /*typedef struct { | |
181 T_RV_HDR header; | |
182 UINT8 swe_num; | |
183 // T_RVF_G_ADDR_ID target; | |
184 // UINT8 attempts; | |
185 // T_RVM_SWE_STATE status; | |
186 } T_RVM_STOP_REQ_MSG; */ | |
187 | |
188 typedef struct { | |
189 T_RV_HDR hdr; | |
190 UINT16 val; | |
191 } T_RVM_RT_MOD_YIELD_T2_MSG; | |
192 | |
193 | |
194 /* information about groups of type2 SWE */ | |
195 #define T_GD_ID UINT8 | |
196 | |
197 typedef struct { | |
198 T_RVM_SWE_STATE host_state; | |
199 T_RVF_GD_ID group_directive; | |
200 T_RVF_G_ADDR_ID host_task_addr; | |
201 // UINT16 hosted_swe_addr[10]; | |
202 UINT8 hosted_swe_db_index[MAX_PARASITES]; // to do ..... constant! | |
203 UINT16 stack_size; | |
204 UINT8 task_priority; | |
205 } T_RVM_GROUP_DIRECTIVE; | |
206 | |
207 T_RV_RET rvm_t2_proxy(void); | |
208 T_RV_RET rvm_t3_proxy(void); | |
209 //typedef TASKPTR rvm_proxy; | |
210 | |
211 /* definitions related to the RVM as a RVF task */ | |
212 #define RVM_TASK_ID (0) | |
213 #define RVM_PRIORITY (220) | |
214 | |
215 /* To do ... should correspond to RVF definitions */ | |
216 #define RVM_TASK 0 /* A-M-E-N-D-E-D ! */ | |
217 #define ET2_HOST_TASK 1 | |
218 #define ET3_TASK 3 | |
219 #define ET4_TASK 4 | |
220 #define ET2_VTASK 5 | |
221 #define PRE_RV_INIT_TASK 10 | |
222 | |
223 | |
224 #define RVM_ERROR_MSG_MAX_LENGTH (100) | |
225 | |
226 | |
227 #define DEFAULT_TIME_SLICING 0 /* default is no time-slicing */ | |
228 | |
229 #define RVM_STACK_SIZE RVF_RVM_STACK_SIZE | |
230 /*#define RVM_STACK_SIZE (1500) */ | |
231 | |
232 /* memory bank related definitions */ | |
233 #define RVM_PRIM_MB "RVM_PRIM" | |
234 #define RVM_PRIM_MB_SIZE RVF_RVM_MB1_SIZE //A-M-E-N-D-E-D | |
235 #define RVM_SYS_MB "RVM_SYS" | |
236 #define RVM_SYS_MB_SIZE RVF_RVM_MB3_SIZE | |
237 #define RVM_TIMER_MB "RVM_TIMER" | |
238 #define RVM_TIMER_MB_SIZE RVF_RVM_MB4_SIZE | |
239 #define RVM_NOTIFY_MB "RVM_NOTIFY" | |
240 #define RVM_NOTIFY_MB_SIZE RVF_RVM_MB5_SIZE | |
241 | |
242 #define RVM_TIMER_MB_WATERMARK (RVM_TIMER_MB_SIZE - 500) | |
243 #define RVM_NOTIFY_MB_WATERMARK (RVM_NOTIFY_MB_SIZE - 500) | |
244 | |
245 #if (defined BLUETOOTH) || (TEST==1) || (TI_PROFILER == 1) || (TI_NUC_MONITOR == 1) | |
246 #define RVM_PRIM_MB_WATERMARK (RVM_PRIM_MB_SIZE - 1000) | |
247 #define RVM_SYS_MB_WATERMARK (RVM_SYS_MB_SIZE - 1000) | |
248 #else | |
249 #define RVM_PRIM_MB_WATERMARK (RVM_PRIM_MB_SIZE - 100) | |
250 #define RVM_SYS_MB_WATERMARK (RVM_SYS_MB_SIZE - 100) | |
251 #endif | |
252 | |
253 #define RVM_STACK_MB "RVM_STACKS" | |
254 #define RVM_STACK_MB_SIZE (RVM_STACK_SIZE + RVF_RVM_MB2_SIZE) | |
255 #define RVM_STACK_MB_WATERMARK RVM_STACK_MB_SIZE | |
256 | |
257 | |
258 | |
259 /***************************************/ | |
260 /* RVM Internal functions declarations */ | |
261 /***************************************/ | |
262 /* function called from rvm_task.c in order to check if an application is startable or stoppable*/ | |
263 | |
264 | |
265 /* functions declarations */ | |
266 T_RVM_RETURN rvm_check_application (T_RVM_USE_ID swe_use_id, UINT8* num_swe, T_RVM_APPLI_ACTION appli_action); | |
267 | |
268 T_RVM_RETURN rvm_error ( T_RVM_NAME swe_name, T_RVM_RETURN error_cause, | |
269 T_RVM_ERROR_TYPE error_type, T_RVM_STRING error_msg); | |
270 | |
271 | |
272 void rvm_task (UINT32 param); | |
273 | |
274 void rvm_launch_appli( T_RVM_MSG * msg_Ptr); | |
275 | |
276 void rvm_stop_appli( T_RVM_STOP_MSG * msg_Ptr); | |
277 | |
278 void rvm_swe_has_stopped(T_RVM_STOP_MSG* p_msg); | |
279 T_RVM_RETURN rvm_dup_stop_msg(T_RVM_STOP_MSG* i_msg, T_RVM_STOP_MSG* o_msg) ; | |
280 void rvm_suspend_swe(UINT8 swe_index); | |
281 T_RVM_RETURN rvm_kill_swe(UINT8 swe_index); | |
282 UINT8 rvm_get_mb_level(UINT8 swe_index) ; | |
283 | |
284 void rvm_shut_down_appli( T_RVM_MSG * msg_Ptr); | |
285 void rvm_shutdown_swe(UINT8 index) ; | |
286 | |
287 T_RVM_TASK_ID rvm_allocate_task_id(UINT8 isRealTask); | |
288 | |
289 T_RVM_RETURN rvm_delete_used_memory ( T_RVM_PROCESSING_SWE * appli); | |
290 | |
291 T_RVM_RETURN rvm_build_swe_list(T_RVM_PROCESSING_SWE ** list, UINT8 swe_num, UINT8 mode); | |
292 | |
293 T_RVM_RETURN rvm_check_memory_requirement( T_RVM_PROCESSING_SWE * appli); // deprected ! | |
294 T_RVM_RETURN rvm_verify_memory_requirement( T_RVM_PROCESSING_SWE * appli,\ | |
295 T_RVM_GROUP_DIRECTIVE* gd, UINT8 cnt); | |
296 | |
297 T_RVM_RETURN rvm_allocate_mb( T_RVM_PROCESSING_SWE * appli); | |
298 | |
299 T_RVM_RETURN rvm_initialize_swe( T_RVM_PROCESSING_SWE * appli, | |
300 T_RVM_GROUP_DIRECTIVE* gd, | |
301 UINT8 cnt); | |
302 | |
303 T_RVM_RETURN rvm_allocate_stack_buffer( UINT32 stack_size, T_RVF_BUFFER** stack_ptr ); | |
304 | |
305 T_RVM_RETURN rvm_delete_created_mb (T_RVM_PROCESSING_SWE * appli); | |
306 | |
307 T_RVM_RETURN rvm_clean_env( T_RVM_PROCESSING_SWE * appli); | |
308 | |
309 T_RVM_RETURN rvm_generic_swe_core(void); | |
310 | |
311 T_RVM_RETURN rvm_init_swe_db (void); | |
312 | |
313 T_RVM_RETURN rvm_snd_msg_to_upper (T_RVM_APPLI_ACTION action, | |
314 T_RVM_RETURN result, | |
315 UINT8 swe_num, | |
316 T_RV_RETURN_PATH return_path); | |
317 | |
318 T_RVM_RETURN rvm_get_swe_index( UINT8 * index, T_RVM_USE_ID swe_use_id); | |
319 | |
320 T_RVM_RETURN rvm_start_group_req(T_RVF_G_ADDR_ID addrId, UINT8* addrGrp) ; | |
321 | |
322 /* | |
323 ** Trace Macros | |
324 */ | |
325 #define RVM_TRACE_ERROR(string)\ | |
326 rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_ERROR,RVM_USE_ID ) | |
327 | |
328 #define RVM_TRACE_ERROR_PARAM(string, param)\ | |
329 rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_ERROR,RVM_USE_ID ) | |
330 | |
331 #define RVM_TRACE_WARNING(string)\ | |
332 rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,RVM_USE_ID ) | |
333 | |
334 #define RVM_TRACE_WARNING_PARAM(string, param)\ | |
335 rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_WARNING,RVM_USE_ID ) | |
336 | |
337 #define RVM_TRACE_DEBUG_HIGH(string)\ | |
338 rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,RVM_USE_ID ) | |
339 | |
340 #define RVM_TRACE_DEBUG_HIGH_PARAM(string, param)\ | |
341 rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_DEBUG_HIGH,RVM_USE_ID ) | |
342 | |
343 #define RVM_TRACE_DEBUG_LOW(string)\ | |
344 rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_LOW,RVM_USE_ID ) | |
345 | |
346 #define RVM_TRACE_DEBUG_LOW_PARAM(string, param)\ | |
347 rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_DEBUG_LOW,RVM_USE_ID ) | |
348 | |
349 | |
350 #endif /* __RVM_I_H_ */ | |
351 |