FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/riviera/rvm/rvm_mem.c @ 502:cff42ff57c60
osx.c: osx_free_mem() done
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Tue, 01 Jul 2014 18:34:53 +0000 | 
| parents | afceeeb2cba1 | 
| children | 
| rev | line source | 
|---|---|
| 
118
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 /** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 * | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 * @file rvm_mem.c | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 * | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 * This file contains the functions related to memory management within RVM. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 * | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 * @author David Lamy-Charrier (d-lamy@ti.com) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
8 * @version 0.1 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
9 * | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 /* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 * Revision History: | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 * | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 * 10/26/2001 David Lamy-Charrier Create for Riviera 1.6. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 * | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 | 
| 
121
 
15e972110527
RVM compiles
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
118 
diff
changeset
 | 
20 #include "rvm_i.h" | 
| 
 
15e972110527
RVM compiles
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
118 
diff
changeset
 | 
21 #include "rvm_gen.h" | 
| 
 
15e972110527
RVM compiles
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
118 
diff
changeset
 | 
22 #include "rvm_api.h" | 
| 
 
15e972110527
RVM compiles
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
118 
diff
changeset
 | 
23 #include "rvm_use_id_list.h" | 
| 
 
15e972110527
RVM compiles
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
118 
diff
changeset
 | 
24 #include "../rvf/rvf_env.h" | 
| 
118
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 extern T_RVM_GET_INFO_FUNC RVM_SWE_GET_INFO_ARRAY[]; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 extern T_RVM_KNOWN_SWE * rvm_swe_array; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
29 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
30 /******************************************************************************* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
31 ** Function rvm_delete_used_memory | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
32 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
33 ** Description Internal function which deletes used local mem if an error | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
34 ** was received or at the end of the start/stop process. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
35 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
36 *******************************************************************************/ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
37 T_RVM_RETURN rvm_delete_used_memory ( T_RVM_PROCESSING_SWE * appli) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
38 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
39 T_RVF_BUFFER_Q buffer_to_free_q = {0, 0, 0}; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
40 T_RVM_PROCESSING_SWE * cur_elem = appli; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
41 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
42 while (cur_elem != NULL) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
43 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
44 rvf_enqueue (&buffer_to_free_q, cur_elem); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
45 cur_elem = cur_elem->next_swe; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
46 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
47 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
48 while (buffer_to_free_q.p_first) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
49 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
50 rvf_free_buf (rvf_dequeue (&buffer_to_free_q)); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
51 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
52 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
53 return RVM_OK; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
54 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
55 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
56 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
57 /******************************************************************************* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
58 ** Function rvm_delete_created_mb | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
59 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
60 ** Description Internal function which deletes all created MB if an error | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
61 ** was received, or in case application has to be stopped. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
62 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
63 *******************************************************************************/ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
64 T_RVM_RETURN rvm_delete_created_mb (T_RVM_PROCESSING_SWE * appli) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
65 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
66 UINT8 mb_index; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
67 T_RVM_PROCESSING_SWE * cur_elem = appli; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
68 volatile T_RV_RET ret_value = RV_OK; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
69 UINT8 mb_to_delete; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
70 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
71 while (cur_elem != NULL ) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
72 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
73 UINT8 swe_index = cur_elem->swe_id; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
74 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
75 /* If more than one appli is using this SWE, cannot delete MB | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
76 Process to the next SWE. */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
77 if (rvm_swe_array[swe_index].nb_using_appli > 1) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
78 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
79 cur_elem = cur_elem->next_swe; /* process the next SWE */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
80 continue; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
81 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
82 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
83 /* If the state is running, it means that this SWE has not | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
84 to be stopped. */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
85 if (rvm_swe_array[swe_index].swe_state == SWE_RUNNING) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
86 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
87 cur_elem = cur_elem->next_swe; /* process the next SWE */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
88 continue; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
89 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
90 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
91 /* We're here: | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
92 - either because swe_state == SWE_NOT_STARTED => error in starting prcess | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
93 - either because swe_state == SWE_STOPPING => regular stopping process */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
94 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
95 if (cur_elem->nb_created_mb == 0) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
96 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
97 cur_elem = cur_elem->next_swe; /* process the next SWE */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
98 continue; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
99 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
100 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
101 mb_to_delete = cur_elem->nb_created_mb; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
102 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
103 for( mb_index = 0; mb_index < mb_to_delete; mb_index++) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
104 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
105 ret_value = rvf_delete_mb(cur_elem->swe_mem_bank[mb_index].mb_name); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
106 if (ret_value != RV_OK) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
107 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
108 rvf_send_trace("RVM: Error in deletion of memory bank: ", 39, NULL_PARAM, RV_TRACE_LEVEL_WARNING, RVM_USE_ID ); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
109 rvf_send_trace(cur_elem->swe_mem_bank[mb_index].mb_name, RVF_MAX_MB_LEN, NULL_PARAM, RV_TRACE_LEVEL_WARNING, RVM_USE_ID ); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
110 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
111 else | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
112 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
113 (cur_elem->nb_created_mb)--; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
114 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
115 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
116 ret_value = RVM_OK; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
117 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
118 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
119 cur_elem = cur_elem->next_swe; /* process the next SWE */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
120 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
121 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
122 return ret_value; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
123 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
124 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
125 /******************************************************************************* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
126 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
127 ** Function rvm_check_memory_requirement | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
128 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
129 ** Description This function checks if there is enough memory | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
130 ** to start a SWE(and all the linked SWEs) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
131 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
132 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
133 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
134 ** Returns T_RVM_RETURN: RVM_OK if there is enough memory, else RVM_MEMORY_ERR. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
135 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
136 *******************************************************************************/ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
137 T_RVM_RETURN rvm_verify_memory_requirement( T_RVM_PROCESSING_SWE * appli, | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
138 T_RVM_GROUP_DIRECTIVE* gd, | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
139 UINT8 cnt) { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
140 T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
141 UINT32 required_mem = 0; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
142 UINT32 total_mem = 0; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
143 UINT32 used_mem = 0; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
144 UINT8 mb_index; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
145 UINT8 i=0; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
146 UINT16 host_task_mem=0; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
147 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
148 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
149 /* get available memory from the rvf */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
150 if ( rvf_get_available_mem( &total_mem, &used_mem) != RVF_OK ) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
151 { return RVM_MEMORY_ERR; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
152 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
153 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
154 /* count required memory */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
155 while (cur_swe !=NULL ) /* for each SWE */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
156 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
157 UINT8 swe_index = cur_swe->swe_id; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
158 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
159 /* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
160 ** If SWE is already running => MB already created => do nothing | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
161 */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
162 if (rvm_swe_array[swe_index].swe_state != SWE_RUNNING ) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
163 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
164 for( mb_index = 0; mb_index < cur_swe->nb_requested_mb; mb_index++) /* for each mb */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
165 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
166 required_mem += cur_swe->swe_mem_bank[mb_index].mb_initial_param.size; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
167 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
168 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
169 /* add the necessary stack sizes */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
170 /* TO DO: add the stack size for host groups not yet started */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
171 if( (cur_swe->swe_type == RVM_SWE_TYPE_3) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
172 || (cur_swe->swe_type == RVM_SWE_TYPE_4) ) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
173 /* || ((cur_swe->swe_type == RVM_SWE_TYPE_2) && (rvm_swe_array[swe_index].group_index == RVM_OWN_GROUP) )) */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
174 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
175 required_mem += rvm_swe_array[swe_index].swe_stack_size; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
176 required_mem += SYSTEM_TASK_MEM; /* only for type 3 & 4. A-M-E-N-D-E-D! */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
177 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
178 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
179 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
180 cur_swe = cur_swe->next_swe; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
181 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
182 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
183 /* type 2 group host system and stack mem. is catered for here */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
184 for(i=0; i<cnt; i++) host_task_mem+=gd[i].stack_size; /* A-M-E-N-D-E-D! */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
185 host_task_mem+=(cnt*SYSTEM_TASK_MEM); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
186 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
187 /* compare available memory and required memory (eventually, use a percentage to improve performances) */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
188 if ((required_mem+host_task_mem) + used_mem > total_mem ) { /* A-M-E-N-D-E-D! */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
189 RVM_TRACE_WARNING_PARAM("RVM: Memory required (incl. used): ", (UINT32)(required_mem+host_task_mem+ used_mem) ); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
190 RVM_TRACE_WARNING_PARAM("RVM: Total Memory available : ", (UINT32)total_mem); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
191 return RVM_MEMORY_ERR; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
192 } else{ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
193 return RVM_OK; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
194 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
195 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
196 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
197 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
198 /******************************************************************************* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
199 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
200 ** Function rvm_allocate_mem | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
201 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
202 ** Description This function creates all the required memory banks or | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
203 ** increases their size if needed, to start a SWE. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
204 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
205 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
206 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
207 ** Returns T_RVM_RETURN: RVM_OK if all allocations are successful, | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
208 ** else RVM_MEMORY_ERR and it releases all the allocated memory. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
209 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
210 *******************************************************************************/ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
211 T_RVM_RETURN rvm_allocate_mb( T_RVM_PROCESSING_SWE * appli) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
212 { T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
213 UINT8 mb_index; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
214 volatile T_RVM_RETURN rvm_ret_value = RVM_OK; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
215 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
216 /* for each SWE in the list */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
217 while ((cur_swe != NULL ) && (rvm_ret_value == RVM_OK)) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
218 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
219 UINT8 swe_index = cur_swe->swe_id; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
220 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
221 if (rvm_swe_array[swe_index].swe_state == SWE_NOT_STARTED) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
222 /* If the state is not SWE_RUNNING, then the MBs have to be created */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
223 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
224 for( mb_index = 0; mb_index < cur_swe->nb_requested_mb; mb_index++) /* for each mb */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
225 { T_RVF_MB_PARAM mb_param; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
226 /* add the initial size */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
227 mb_param.size = cur_swe->swe_mem_bank[mb_index].mb_initial_param.size; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
228 mb_param.watermark = cur_swe->swe_mem_bank[mb_index].mb_initial_param.watermark; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
229 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
230 /* create the mb */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
231 if ( mb_param.size != 0) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
232 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
233 /* create the mb */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
234 if ( rvf_create_mb( cur_swe->swe_mem_bank[mb_index].mb_name, mb_param, &(cur_swe->bk_id_table[mb_index]) ) != RVF_OK) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
235 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
236 /* if an error occurs */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
237 rvm_ret_value = RVM_MEMORY_ERR; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
238 break; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
239 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
240 else | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
241 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
242 cur_swe->nb_created_mb++; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
243 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
244 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
245 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
246 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
247 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
248 cur_swe = cur_swe->next_swe; /* process the next SWE */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
249 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
250 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
251 if (rvm_ret_value != RVM_OK) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
252 /* Something went wrong, should release all used memory */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
253 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
254 rvf_send_trace("RVM: Problem in memory bank creation !!!", 40, NULL_PARAM, RV_TRACE_LEVEL_WARNING, RVM_USE_ID ); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
255 if (rvm_delete_created_mb (appli) != RVM_OK) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
256 { | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
257 rvf_send_trace("RVM: MB deleting error!!!", 25, NULL_PARAM, RV_TRACE_LEVEL_WARNING, RVM_USE_ID ); | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
258 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
259 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
260 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
261 return rvm_ret_value; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
262 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
263 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
264 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
265 /******************************************************************************* | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
266 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
267 ** Function rvm_allocate_stack_buffer | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
268 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
269 ** Description This function allocates a buffer for the stack of a new | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
270 ** task created by RVM. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
271 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
272 ** Parameters: UINT32 stack_size: size of stack. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
273 ** T_RVF_BUFFER** stack_ptr: pointer to the allocated buffer. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
274 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
275 ** Returns T_RVM_RETURN: RVM_OK if all allocation is successful, | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
276 ** else RVM_MEMORY_ERR. | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
277 ** | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
278 *******************************************************************************/ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
279 T_RVM_RETURN rvm_allocate_stack_buffer( UINT32 stack_size, T_RVF_BUFFER** stack_ptr ) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
280 { T_RVF_MB_PARAM mb_params; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
281 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
282 /* increase the size of the stack MB before allocating the new buffer */ | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
283 if( rvf_get_mb_param( RVM_STACK_MB, &mb_params) != RV_OK) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
284 { return RVM_MEMORY_ERR; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
285 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
286 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
287 mb_params.size += stack_size; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
288 mb_params.watermark += stack_size; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
289 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
290 if( rvf_set_mb_param( RVM_STACK_MB, &mb_params) != RV_OK) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
291 { return RVM_MEMORY_ERR; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
292 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
293 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
294 if( rvf_get_buf( rvm_stack_mem_bank, stack_size, stack_ptr) == RVF_RED) | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
295 { return RVM_MEMORY_ERR; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
296 } | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
297 return RVM_OK; | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
298 | 
| 
 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
299 } | 
