FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/riviera/rvm/rvm_mem.c @ 557:3bb11261b9fe
L1: started work on l1_func.c
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Mon, 04 Aug 2014 17:20:38 +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: 
118diff
changeset | 20 #include "rvm_i.h" | 
| 
15e972110527
RVM compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 21 #include "rvm_gen.h" | 
| 
15e972110527
RVM compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 22 #include "rvm_api.h" | 
| 
15e972110527
RVM compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 23 #include "rvm_use_id_list.h" | 
| 
15e972110527
RVM compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
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 } | 
