comparison src/cs/riviera/rvm/rvm_gen.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 * @file rvm_gen.h
3 *
4 * Defines the generic types used by the Riviera Environment
5 * and the exported function of the RVM block.
6 *
7 * @author David Lamy-Charrier (d-lamy@ti.com)
8 * @version 0.1
9 */
10
11 /*
12 * Revision History:
13 *
14 * Date Author Modification
15 * -------------------------------------------------------------------
16 * 19/01/2000 David Lamy-Charrier Create.
17 * 11/20/2001 Vincent Oberle Added BUILD_VERSION_NUMBER.
18 * Documentation cleaning
19 *
20 * (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved
21 */
22
23 #ifndef __RVM_GEN_H_
24 #define __RVM_GEN_H_
25
26 #ifndef _WINDOWS
27 #include "config/rv.cfg"
28 #endif
29
30 #include "rvf/rvf_api.h" /* for memory bank related definitions & GD*/
31 #include "rvm/rvm_api.h"
32
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38
39 /* RVM global definitions */
40 #define T_RVM_STRING char *
41 #define T_RVM_ERROR_TYPE UINT32
42
43 #define RVM_MAX_NB_MEM_BK (3)
44
45 #define RVM_MAX_NB_LINKED_SWE (10)
46
47 #define RVM_USED_MAILBOX RVF_TASK_MBOX_0
48
49
50 /* define the 4 SWE types */
51 typedef enum
52 {
53 RVM_SWE_TYPE_1,
54 RVM_SWE_TYPE_2,
55 RVM_SWE_TYPE_3,
56 RVM_SWE_TYPE_4
57 } T_RVM_SWE_TYPE;
58
59
60 /* Memory bank parameters */
61 typedef struct
62 {
63 T_RVF_MB_NAME bank_name;
64 T_RVF_MB_PARAM initial_params;
65 } T_RVM_BK_INFO;
66
67
68 /* RVM callback function pointer type */
69 typedef T_RVM_RETURN (*T_RVM_CB_FUNC)(T_RVM_NAME swe_name,
70 T_RVM_RETURN error_cause,
71 T_RVM_ERROR_TYPE error_type,
72 T_RVM_STRING error_msg);
73
74 /*
75 * Macro used to build the version number from the
76 * - major version number (8 bits)
77 * - minor version number (8 bits)
78 * - build number (16 bits). A 0 indicates this number is not used.
79 */
80 #define BUILD_VERSION_NUMBER(major, minor, build) ( ((major & 0xFF) << 24) | \
81 ((minor & 0xFF) << 16) | \
82 (build & 0xFFFF) )
83
84 /* SWE core function prototype */
85 typedef T_RVM_RETURN (*T_RVM_SWE_CORE_FUNC)(void);
86
87 /* Type1 SWE info */
88 typedef struct
89 {
90 T_RVM_NAME swe_name;
91 T_RVM_USE_ID swe_use_id;
92 UINT32 version;
93 UINT8 nb_mem_bank;
94 T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
95 UINT8 nb_linked_swe;
96 T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
97 T_RV_RETURN_PATH return_path;
98 T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
99 T_RV_RETURN_PATH return_path[],
100 T_RVF_MB_ID bk_id_table[],
101 T_RVM_CB_FUNC call_back_error_ft);
102 T_RVM_RETURN (* init) (void);
103 T_RVM_RETURN (* start) (void);
104 T_RVM_RETURN (* stop) (/*T_RV_HDR* hdr*/void); //???
105 T_RVM_RETURN (* kill) (void);
106 } T_RVM_SWE_PASSIVE_INFO;
107
108 /* Type2 SWE info */
109 typedef struct
110 {
111 T_RVM_NAME swe_name;
112 T_RVM_USE_ID swe_use_id;
113 UINT16 stack_size;
114 UINT8 priority;
115 UINT32 version;
116 UINT8 nb_mem_bank;
117 T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
118 UINT8 nb_linked_swe;
119 T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
120 T_RV_RETURN_PATH return_path;
121 T_RVF_GD_ID swe_group_directive; /* A-M-E-N-D-E-D! */
122 T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
123 T_RV_RETURN_PATH return_path[],
124 T_RVF_MB_ID bk_id_table[], /* A-M-E-N-E-D-E-D! is table or list??*/
125 T_RVM_CB_FUNC call_back_error_ft);
126 T_RVM_RETURN (* init) (void);
127 T_RVM_RETURN (* start) (void);
128 T_RVM_RETURN (* handle_message) (T_RV_HDR * msg);
129 T_RVM_RETURN (* handle_timer) (T_RV_HDR * msg);
130 T_RVM_RETURN (* stop) (T_RV_HDR* hdr);
131 T_RVM_RETURN (* kill) (void);
132 } T_RVM_SWE_GROUP_MEMBER_INFO;
133
134 /* Type3 SWE info */
135 typedef struct
136 {
137 T_RVM_NAME swe_name;
138 T_RVM_USE_ID swe_use_id;
139 UINT16 stack_size;
140 UINT8 priority;
141 UINT32 version;
142 UINT8 nb_mem_bank;
143 T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
144 UINT8 nb_linked_swe;
145 T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
146 T_RV_RETURN_PATH return_path;
147 T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
148 T_RV_RETURN_PATH return_path[],
149 T_RVF_MB_ID bk_id_table[],
150 T_RVM_CB_FUNC call_back_error_ft);
151 T_RVM_RETURN (* init) (void);
152 T_RVM_RETURN (* start) (void);
153 T_RVM_RETURN (* handle_message) (T_RV_HDR * msg);
154 T_RVM_RETURN (* handle_timer) (T_RV_HDR * msg);
155 T_RVM_RETURN (* stop) (T_RV_HDR* hdr);
156 T_RVM_RETURN (* kill) (void);
157 } T_RVM_SWE_SINGLE_INFO;
158
159 /* Type4 SWE info */
160 typedef struct
161 {
162 T_RVM_NAME swe_name;
163 T_RVM_USE_ID swe_use_id;
164 UINT16 stack_size;
165 UINT8 priority;
166 UINT32 version;
167 UINT8 nb_mem_bank;
168 T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
169 UINT8 nb_linked_swe;
170 T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
171 T_RV_RETURN_PATH return_path;
172 T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
173 T_RV_RETURN_PATH return_path[],
174 T_RVF_MB_ID bk_id_table[],
175 T_RVM_CB_FUNC call_back_error_ft);
176 T_RVM_RETURN (* init) (void);
177 T_RVM_RETURN (* core) (void);
178 T_RVM_RETURN (* stop) (/*T_RV_HDR* hdr*/void); // could be removed completely except for legacy code
179 T_RVM_RETURN (* kill) (void);
180 } T_RVM_SWE_SELF_MADE_INFO;
181
182
183 /* SWE information */
184 typedef struct
185 {
186 T_RVM_SWE_TYPE swe_type;
187
188 union
189 { T_RVM_SWE_PASSIVE_INFO type1;
190 T_RVM_SWE_GROUP_MEMBER_INFO type2;
191 T_RVM_SWE_SINGLE_INFO type3;
192 T_RVM_SWE_SELF_MADE_INFO type4;
193 } type_info;
194 } T_RVM_INFO_SWE;
195
196
197 /* get info function pointer type */
198 typedef T_RVM_RETURN (*T_RVM_GET_INFO_FUNC) (T_RVM_INFO_SWE * param);
199
200
201 /* type used in the const SWEs array */
202 typedef struct t_rvm_const_swe_info
203 {
204 T_RVM_USE_ID use_id;
205 T_RVM_GET_INFO_FUNC get_info_func;
206 } T_RVM_CONST_SWE_INFO;
207
208
209 #ifdef __cplusplus
210 }
211 #endif
212
213
214 #endif /* __RVM_GEN_H_ */
215