FreeCalypso > hg > tcs211-l1-reconst
annotate chipsetsw/riviera/rvm/rvm_swe_hdlr.c @ 283:974835ad720c
STATUS top level file added
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Tue, 14 Mar 2017 08:13:28 +0000 | 
| parents | 509db1a7b7b8 | 
| children | 
| rev | line source | 
|---|---|
| 0 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1 /** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 2 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 3 * @file rvm_swe_hdlr.c | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 4 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 5 * This file contains the functions related to SWEs management within RVM. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 6 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 7 * @author David Lamy-Charrier (d-lamy@ti.com) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 8 * @version 0.1 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 9 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 10 */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 11 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 12 /* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 13 * Revision History: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 14 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 15 * 10/26/2001 David Lamy-Charrier Create for Riviera 1.6. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 16 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 17 * (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 18 */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 19 #include <stdio.h> | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 20 #include "rvf/rvf_env.h" | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 21 #include "rvm/rvm_gen.h" | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 22 #include "rvm/rvm_api.h" | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 23 #include "rvm/rvm_i.h" | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 24 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 25 #include "rvf/rvf_i.h" /* ET2 rvf private invocation API */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 26 #include "rvf/rvf_api.h" /* A-M-E-N-D-E-D! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 27 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 28 /* temporary inclusion for HCI pb on WINDOWS */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 29 /* TO DO: remove it. */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 30 #include "rvm/rvm_use_id_list.h" | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 31 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 32 #include <string.h> | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 33 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 34 extern T_RVM_CONST_SWE_INFO RVM_SWE_GET_INFO_ARRAY[]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 35 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 36 extern T_RVM_USE_ID * RVM_TYPE2_SWE_GROUPS[]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 37 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 38 extern BOOLEAN rvm_allocated_task_id [MAX_RVF_TASKS]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 39 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 40 extern T_RVM_KNOWN_SWE * rvm_swe_array; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 41 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 42 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 43 /* private */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 44 T_RVM_RETURN _fatal(T_RVM_PROCESSING_SWE* appli, UINT8 rm); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 45 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 46 /*********************************************************************** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 47 * Function _resolve_t2_grouping (private) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 48 * | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 49 * Description resolves number of group directives & ret. group count | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 50 *************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 51 UINT8 _resolve_t2_grouping(T_RVM_PROCESSING_SWE* appli, T_RVM_GROUP_DIRECTIVE* gd) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 52 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 53 T_RVM_PROCESSING_SWE* cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 54 UINT8 i=0, j=0, k=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 55 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 56 for(; cur_swe != NULL;) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 57 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 58 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 59 rvm_swe_array[swe_index].swe_get_info(&swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 60 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 61 if (rvm_swe_array[swe_index].swe_state !=SWE_RUNNING && //== SWE_NOT_STARTED && | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 62 swe_info.swe_type==RVM_SWE_TYPE_2) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 63 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 64 for(i=0; i<MAX_GRPS; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 65 if(swe_info.type_info.type2.swe_group_directive == gd[i].group_directive) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 66 for(k=0; gd[i].hosted_swe_db_index[k]!=0; k++); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 67 if(k<MAX_COMPOSITES) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 68 gd[i].hosted_swe_db_index[k]=swe_index; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 69 } else { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 70 /* TO DO ... ERROR !!! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 71 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 72 // RVM_TRACE_WARNING_PARAM("rvm.SweHndlr.resolve_t2_grouping(), appended to grp entry , nb=",\ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 73 // (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 74 //printf("rvm.SweHndlr.resolve_t2_grouping(): appended %d to group: %d\n",gd[i].hosted_swe_db_index[k], gd[i].host_task_addr); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 75 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 76 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 77 } else if( swe_info.type_info.type2.swe_group_directive != gd[i].group_directive && | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 78 gd[i].host_task_addr==0 ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 79 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 80 /* Constraint! Expects all group priorites and stack sz to be equal | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 81 * Additional method must be used to set highest entity pri. or resolve */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 82 gd[i].host_task_addr=RVF_INVALID_ADDR_ID; //rvm_allocate_task_id(1); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 83 gd[i].group_directive=swe_info.type_info.type2.swe_group_directive; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 84 gd[i].task_priority=swe_info.type_info.type2.priority; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 85 gd[i].stack_size=swe_info.type_info.type2.stack_size; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 86 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 87 gd[i].hosted_swe_db_index[0]=swe_index; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 88 j++; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 89 // RVM_TRACE_WARNING_PARAM("rvm.SweHndlr.resolve_t2_grouping(), created grp entry , nb=",\ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 90 // (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 91 //printf("rvm.SweHndlr.resolve_t2_grouping(): created host group: %d AND append %d\n",gd[i].host_task_addr, gd[i].hosted_swe_db_index[0]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 92 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 93 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 94 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 95 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 96 } else RVM_TRACE_WARNING_PARAM("rvm.SweHndlr.resolve_t2_grouping(), SWE Not type 2: ", rvm_swe_array[swe_index].swe_use_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 97 cur_swe = cur_swe->next_swe; /* process next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 98 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 99 //printf("rvm.SweHndlr.resolve_t2_grouping(): total group count: %d\n", j); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 100 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 101 //for(i=0; i<j; i++) /* de'bugger only!! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 102 // for(k=0; k<MAX_COMPOSITES && gd[i].hosted_swe_db_index[k]!=0; k++) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 103 // printf("host addr: %d, T2 swe_db_index %d\n", | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 104 // gd[i].host_task_addr, gd[i].hosted_swe_db_index[k]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 105 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 106 return j; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 107 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 108 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 109 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 110 ** Function rvm_allocate_task_id | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 111 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 112 ** Description Internal function which allocate the first available | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 113 ** task id to a SWE in creation | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 114 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 115 T_RVM_TASK_ID rvm_allocate_task_id(UINT8 isRealTask) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 116 /* UINT8 i=0; */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 117 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 118 /* Find the 1st free task id | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 119 If we reach the max: all task ids are allocated => not possible to start SWE.*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 120 /* while (rvm_allocated_task_id[i] == TRUE) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 121 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 122 i++; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 123 if (i == MAX_RVF_TASKS) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 124 return RVF_INVALID_TASK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 125 }*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 126 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 127 /* Lock task id and return its value. */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 128 /* rvm_allocated_task_id[i] = TRUE; */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 129 /* return ((T_RVM_TASK_ID) i); */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 130 return (T_RVM_TASK_ID) rvf_allocate_task_id(isRealTask); /* A-M-E-N-D-E-D! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 131 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 132 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 133 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 134 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 135 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 136 ** Function rvm_set_swe_info | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 137 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 138 ** Description This function call the set_info function of each SWEs required | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 139 ** to start a specified SWE. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 140 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 141 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 142 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 143 ** Returns T_RVM_RETURN: RVM_OK if successful. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 144 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 145 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 146 T_RVM_RETURN rvm_set_swe_info(T_RVM_PROCESSING_SWE * appli) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 147 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 148 T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 149 UINT8 i; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 150 T_RVF_MB_ID _bk_id_table[RVM_MAX_NB_MEM_BK]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 151 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 152 /* for each SWE in the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 153 while( cur_swe != NULL ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 154 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 155 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 156 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 157 if (rvm_swe_array[swe_index].swe_state != SWE_RUNNING) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 158 /* Call the set_info function for only those for which MB were just created */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 159 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 160 /* First build return path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 161 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 162 T_RV_RETURN_PATH return_path[RVM_MAX_NB_LINKED_SWE]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 163 T_RVM_USE_ID linked_swe_use_id[RVM_MAX_NB_LINKED_SWE]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 164 UINT8 nb_linked_swe = 0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 165 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 166 rvm_swe_array[swe_index].swe_get_info(&swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 167 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 168 switch( swe_info.swe_type) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 169 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 170 case(RVM_SWE_TYPE_1): | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 171 { nb_linked_swe = swe_info.type_info.type1.nb_linked_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 172 memcpy( linked_swe_use_id, swe_info.type_info.type1.linked_swe_id, RVM_MAX_NB_LINKED_SWE * sizeof(T_RVM_USE_ID) ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 173 if(rvm_swe_array[swe_index].swe_state != SWE_NOT_STARTED) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 174 for(i=0;i<swe_info.type_info.type1.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 175 rvf_get_mb_id((char*)&swe_info.type_info.type1.mem_bank[i], | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 176 &_bk_id_table[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 177 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 178 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 179 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 180 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 181 case(RVM_SWE_TYPE_2): | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 182 { nb_linked_swe = swe_info.type_info.type2.nb_linked_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 183 memcpy( linked_swe_use_id, swe_info.type_info.type2.linked_swe_id, RVM_MAX_NB_LINKED_SWE * sizeof(T_RVM_USE_ID) ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 184 if((rvm_swe_array[cur_swe->swe_id].swe_addr_id = rvm_allocate_task_id(0))==RVF_INVALID_ADDR_ID) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 185 return RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 186 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 187 if(rvm_swe_array[swe_index].swe_state != SWE_NOT_STARTED) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 188 for(i=0;i<swe_info.type_info.type2.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 189 rvf_get_mb_id((char*)&swe_info.type_info.type2.mem_bank[i], | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 190 &_bk_id_table[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 191 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 192 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 193 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 194 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 195 case(RVM_SWE_TYPE_3): | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 196 { nb_linked_swe = swe_info.type_info.type3.nb_linked_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 197 memcpy( linked_swe_use_id, swe_info.type_info.type3.linked_swe_id, RVM_MAX_NB_LINKED_SWE * sizeof(T_RVM_USE_ID) ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 198 if((rvm_swe_array[cur_swe->swe_id].swe_addr_id = rvm_allocate_task_id(1))==RVF_INVALID_ADDR_ID) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 199 return RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 200 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 201 if(rvm_swe_array[swe_index].swe_state != SWE_NOT_STARTED) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 202 for(i=0;i<swe_info.type_info.type3.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 203 rvf_get_mb_id((char*)&swe_info.type_info.type3.mem_bank[i], | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 204 &_bk_id_table[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 205 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 206 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 207 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 208 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 209 case(RVM_SWE_TYPE_4): | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 210 { nb_linked_swe = swe_info.type_info.type4.nb_linked_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 211 memcpy( linked_swe_use_id, swe_info.type_info.type4.linked_swe_id, RVM_MAX_NB_LINKED_SWE * sizeof(T_RVM_USE_ID) ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 212 if((rvm_swe_array[cur_swe->swe_id].swe_addr_id = rvm_allocate_task_id(1))==RVF_INVALID_ADDR_ID) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 213 return RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 214 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 215 if(rvm_swe_array[swe_index].swe_state != SWE_NOT_STARTED) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 216 for(i=0;i<swe_info.type_info.type4.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 217 rvf_get_mb_id((char*)&swe_info.type_info.type4.mem_bank[i], | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 218 &_bk_id_table[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 219 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 220 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 221 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 222 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 223 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 224 rvm_swe_array[cur_swe->swe_id].swe_return_path.addr_id=rvm_swe_array[cur_swe->swe_id].swe_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 225 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 226 for (i=0; i < nb_linked_swe; i++) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 227 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 228 UINT8 linked_swe_index; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 229 if (rvm_get_swe_index(&linked_swe_index, linked_swe_use_id[i]) != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 230 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 231 return RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 232 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 233 return_path[i].callback_func = rvm_swe_array[linked_swe_index].swe_return_path.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 234 /* TO DO: manage addr_id for GROUP_MEMBER SWEs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 235 return_path[i].addr_id = rvm_swe_array[linked_swe_index].swe_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 236 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 237 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 238 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 239 if (cur_swe->rvm_functions.set_info != NULL ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 240 if(rvm_swe_array[swe_index].swe_state == SWE_NOT_STARTED) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 241 cur_swe->rvm_functions.set_info(rvm_swe_array[cur_swe->swe_id].swe_addr_id, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 242 return_path, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 243 cur_swe->bk_id_table, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 244 rvm_error); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 245 } else { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 246 cur_swe->rvm_functions.set_info(rvm_swe_array[cur_swe->swe_id].swe_addr_id, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 247 return_path, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 248 _bk_id_table, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 249 rvm_error); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 250 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 251 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 252 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 253 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 254 cur_swe = cur_swe->next_swe; /* process next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 255 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 256 return RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 257 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 258 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 259 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 260 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 261 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 262 ** Function rvm_initialize_swe | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 263 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 264 ** Description This function initialize all the required SWEs which are not running. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 265 ** It also creates the tasks in a suspend state. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 266 ** Then it resumes the tasks and call the start function of each SWE. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 267 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 268 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 269 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 270 ** Returns T_RVM_RETURN: RVM_OK if successful. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 271 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 272 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 273 T_RVM_RETURN rvm_initialize_swe( T_RVM_PROCESSING_SWE * appli, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 274 T_RVM_GROUP_DIRECTIVE* gd, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 275 UINT8 t2cnt) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 276 T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 277 UINT8 i=0, j=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 278 UINT16 tuid=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 279 T_RVF_BUFFER* stack_ptr=NULL; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 280 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 281 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 282 #ifdef _WINDOWS | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 283 BOOLEAN hci_started = FALSE; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 284 #endif | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 285 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 286 /* for each SWE in the list, initialize it */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 287 while( cur_swe != NULL ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 288 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 289 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 290 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 291 if ( rvm_swe_array[swe_index].swe_state != SWE_RUNNING) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 292 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 293 /* call its init function */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 294 if (cur_swe->rvm_functions.init) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 295 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 296 if (cur_swe->rvm_functions.init() != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 297 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 298 rvf_send_trace("RVM: Error Calling init function of swe nb ", 43, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 299 (UINT32)swe_index, RV_TRACE_LEVEL_ERROR, RVM_USE_ID ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 300 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 301 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 302 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 303 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 304 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 305 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 306 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 307 /* for each SWE in the list, create the task if necessary. */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 308 cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 309 while( cur_swe != NULL ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 310 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 311 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 312 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 313 if ( rvm_swe_array[swe_index].swe_state != SWE_RUNNING) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 314 /* start the task if necessary in SUSPEND mode */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 315 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 316 if ( cur_swe->swe_type == RVM_SWE_TYPE_4) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 317 /* allocate a buffer for the stack */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 318 if ( rvm_allocate_stack_buffer( cur_swe->stack_size, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 319 &rvm_swe_array[swe_index].stack_ptr) != RVM_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 320 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 321 rvf_send_trace("RVM: Error allocating stack nb:", 28, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_ERROR, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 322 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 323 /* TO DO: manage the error case */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 324 return RVF_MEMORY_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 325 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 326 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 327 /* start the task in suspend mode */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 328 if (rvf_create_task((TASKPTR) cur_swe->rvm_functions.core, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 329 (UINT8)rvm_swe_array[swe_index].swe_addr_id,\ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 330 rvm_swe_array[swe_index].swe_name, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 331 rvm_swe_array[swe_index].stack_ptr, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 332 cur_swe->stack_size, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 333 cur_swe->priority, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 334 ET4_TASK,\ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 335 DEFAULT_TIME_SLICING, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 336 SUSPEND ) != RV_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 337 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 338 rvf_send_trace("RVM: Error Creating Task nb:", 28, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_ERROR, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 339 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 340 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 341 rvf_setRtAddrSweIndex(rvm_swe_array[swe_index].swe_addr_id, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 342 swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 343 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 344 rvf_send_trace("RVM: Created task nb ", 21, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_DEBUG_LOW, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 345 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 346 } else if (cur_swe->swe_type == RVM_SWE_TYPE_3) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 347 /* allocate a buffer for the stack */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 348 if ( rvm_allocate_stack_buffer( cur_swe->stack_size, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 349 &rvm_swe_array[swe_index].stack_ptr) != RVM_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 350 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 351 rvf_send_trace("RVM: Error allocating stack nb:", 28, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_ERROR, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 352 /* TO DO: manage the error case */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 353 return RVF_MEMORY_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 354 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 355 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 356 /* start the task in suspend mode */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 357 if (rvf_create_task((TASKPTR)rvm_t3_proxy, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 358 (UINT8)rvm_swe_array[swe_index].swe_addr_id,\ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 359 rvm_swe_array[swe_index].swe_name, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 360 rvm_swe_array[swe_index].stack_ptr, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 361 cur_swe->stack_size, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 362 cur_swe->priority, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 363 ET3_TASK,\ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 364 DEFAULT_TIME_SLICING, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 365 SUSPEND ) != RV_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 366 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 367 rvf_send_trace("RVM: Error Creating E3 Task nb:", 28, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_ERROR, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 368 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 369 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 370 rvf_register_t3_handlers(rvm_swe_array[swe_index].swe_addr_id, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 371 cur_swe->rvm_functions.handle_message, /* traverse list hence: cur_swe->rvm_functions */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 372 cur_swe->rvm_functions.handle_timer ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 373 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 374 rvf_setRtAddrSweIndex(rvm_swe_array[swe_index].swe_addr_id, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 375 swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 376 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 377 rvf_send_trace("RVM: Created task nb ", 21, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_DEBUG_LOW, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 378 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 379 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 380 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 381 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 382 cur_swe = cur_swe->next_swe; /* process next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 383 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 384 /* resolve T2 grouping */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 385 for(i=0; i<t2cnt; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 386 gd[i].host_task_addr=rvf_resolveHostingAddrId(gd[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 387 if( gd[i].host_task_addr==RVF_INVALID_ADDR_ID) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 388 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 389 if ( rvm_allocate_stack_buffer( gd[i].stack_size, &stack_ptr) != RVM_OK){ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 390 /* TO DO: manage the error case - ABORT & Clean-up if one or more linked Ent. fail */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 391 //break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 392 return RVF_MEMORY_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 393 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 394 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 395 gd[i].host_task_addr=rvm_allocate_task_id(1); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 396 rvf_create_task((TASKPTR)rvm_t2_proxy, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 397 gd[i].host_task_addr, // | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 398 "hosting_task", | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 399 stack_ptr, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 400 gd[i].stack_size, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 401 gd[i].task_priority, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 402 ET2_HOST_TASK, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 403 DEFAULT_TIME_SLICING, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 404 SUSPEND); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 405 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 406 rvf_associateGrpToHost(gd[i].host_task_addr, gd[i].group_directive); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 407 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 408 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 409 for(j=0; j<MAX_COMPOSITES && gd[i].hosted_swe_db_index[j]!=0; j++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 410 /* create virtual task for each "hosted_swe_db_index[]" */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 411 rvm_swe_array[gd[i].hosted_swe_db_index[j]].swe_get_info(&swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 412 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 413 rvf_create_virtual_task(swe_info.type_info.type2.handle_message, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 414 swe_info.type_info.type2.handle_timer, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 415 rvm_swe_array[gd[i].hosted_swe_db_index[j]].swe_addr_id, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 416 gd[i].host_task_addr, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 417 rvm_swe_array[gd[i].hosted_swe_db_index[j]].swe_name, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 418 rvm_swe_array[gd[i].hosted_swe_db_index[j]].swe_priority, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 419 ET2_VTASK); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 420 rvf_setRtAddrSweIndex(rvm_swe_array[gd[i].hosted_swe_db_index[j]].swe_addr_id, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 421 gd[i].hosted_swe_db_index[j]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 422 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 423 /* register each with associate host */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 424 rvf_registerToHost( gd[i].host_task_addr, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 425 rvm_swe_array[gd[i].hosted_swe_db_index[j]].swe_addr_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 426 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 427 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 428 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 429 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 430 /* resume all hosting tasks... */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 431 for(i=0; i<t2cnt; i++) rvf_resume_task((UINT8)gd[i].host_task_addr); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 432 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 433 /* start composites or virtual tasks */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 434 for(i=0; i<t2cnt; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 435 rvm_start_group_req((UINT8)gd[i].host_task_addr, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 436 gd[i].hosted_swe_db_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 437 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 438 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 439 /* for each SWE in the list, start it if necessary. */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 440 for(cur_swe = appli; cur_swe != NULL; ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 441 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 442 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 443 if ( rvm_swe_array[swe_index].swe_state != SWE_RUNNING) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 444 /* if the SWE is a task, resume it */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 445 if ( (cur_swe->swe_type == RVM_SWE_TYPE_3) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 446 || (cur_swe->swe_type == RVM_SWE_TYPE_4) ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 447 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 448 /* TO DO: check the return value */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 449 if(rvf_resume_task((UINT8)rvm_swe_array[swe_index].swe_addr_id )!=RVF_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 450 RVM_TRACE_WARNING("RVM: ERROR! UNABLE TO RESUME SWE"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 451 return RVF_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 452 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 453 rvf_send_trace("RVM: Resumed task nb ", 21, (UINT32)rvm_swe_array[swe_index].swe_addr_id, RV_TRACE_LEVEL_DEBUG_LOW, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 454 rvf_send_trace("RVM: Resumed SWE ", 17, (UINT32)rvm_swe_array[swe_index].swe_use_id, RV_TRACE_LEVEL_DEBUG_LOW, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 455 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 456 #ifdef _WINDOWS | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 457 if (rvm_swe_array[swe_index].swe_use_id == HCI_USE_ID ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 458 hci_started = TRUE; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 459 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 460 #endif | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 461 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 462 } else if(cur_swe->swe_type==RVM_SWE_TYPE_1) { /* A-M-E-N-D-E-D! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 463 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 464 /* call its init function */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 465 if (cur_swe->rvm_functions.start) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 466 if (cur_swe->rvm_functions.start() != RVM_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 467 rvf_send_trace("RVM: Error Calling start function of swe nb ", 44, \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 468 (UINT32)swe_index, RV_TRACE_LEVEL_ERROR, RVM_USE_ID); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 469 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 470 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 471 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 472 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 473 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 474 /* increment the number of using swe and points to the using appli */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 475 /* DOES NOT DEPEND ON THE STATE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 476 /*rvm_swe_array[swe_index].swe_get_info(&swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 477 switch( swe_info.swe_type) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 478 case RVM_SWE_TYPE_1: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 479 if(!swe_info.type_info.type1.nb_linked_swe) rvm_swe_array[swe_index].nb_using_appli=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 480 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 481 case RVM_SWE_TYPE_2: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 482 if(!swe_info.type_info.type2.nb_linked_swe) rvm_swe_array[swe_index].nb_using_appli=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 483 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 484 case RVM_SWE_TYPE_3: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 485 if(!swe_info.type_info.type3.nb_linked_swe) rvm_swe_array[swe_index].nb_using_appli=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 486 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 487 case RVM_SWE_TYPE_4: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 488 if(!swe_info.type_info.type4.nb_linked_swe) rvm_swe_array[swe_index].nb_using_appli=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 489 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 490 default: rvm_swe_array[swe_index].nb_using_appli=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 491 }*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 492 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 493 // if(rvm_swe_array[swe_index].nb_using_appli) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 494 // rvm_swe_array[swe_index].using_appli[rvm_swe_array[swe_index].nb_using_appli++] = appli->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 495 // | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 496 // } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 497 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 498 if(rvm_swe_array[appli->swe_id].nb_using_appli<RVM_MAX_SWE_USING ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 499 rvm_swe_array[appli->swe_id].using_appli[rvm_swe_array[appli->swe_id].nb_using_appli++]=swe_index; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 500 } else { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 501 RVM_TRACE_WARNING_PARAM("RVM: Unable to track 'Using Appli' list is full nb=", appli->swe_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 502 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 503 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 504 cur_swe = cur_swe->next_swe; /* process next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 505 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 506 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 507 for(cur_swe=appli; cur_swe!=NULL; ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 508 rvm_swe_array[cur_swe->swe_id].swe_state = SWE_RUNNING; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 509 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 510 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 511 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 512 #ifdef _WINDOWS | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 513 if (hci_started == TRUE) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 514 rvf_delay(RVF_MS_TO_TICKS(1000)); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 515 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 516 #endif | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 517 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 518 return RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 519 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 520 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 521 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 522 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 523 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 524 ** Function rvm_stop_swe_list | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 525 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 526 ** Description This function will call the stop functions when possible. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 527 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 528 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 529 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 530 ** Returns T_RVM_OK if all allocation are successful, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 531 ** else T_RVM_INTERNAL_ERR (then some SWE are not stopped. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 532 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 533 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 534 T_RVM_RETURN rvm_stop_swe_list( T_RVM_PROCESSING_SWE * appli, T_RV_HDR* hdr) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 535 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 536 T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 537 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 538 volatile T_RVM_RETURN rvm_ret_value = RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 539 T_RVM_STOP_MSG* p_msg=NULL; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 540 UINT8 i=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 541 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 542 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 543 /* for each SWE in the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 544 while (cur_swe != NULL ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 545 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 546 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 547 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 548 /* If nb_using_appli > 1, SWE cannot be stopped */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 549 /* if (rvm_swe_array[swe_index].nb_using_appli > 1) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 550 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 551 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 552 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 553 // If nb_using_appli == 1 but using_appli != appli, SWE cannot be stopped | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 554 if ((rvm_swe_array[swe_index].nb_using_appli == 1) && \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 555 (rvm_swe_array[swe_index].using_appli[0] != appli->swe_id)) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 556 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 557 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 558 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 559 */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 560 if (cur_swe->swe_type==RVM_SWE_TYPE_1) { //cater for de-init of lib | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 561 if(cur_swe->rvm_functions.stop1)cur_swe->rvm_functions.stop1(); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 562 if(cur_swe->rvm_functions.kill)cur_swe->rvm_functions.kill(); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 563 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 564 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 565 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 566 if (cur_swe->swe_type==RVM_SWE_TYPE_4) { // etype 4 restriction | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 567 RVM_TRACE_WARNING_PARAM("RVM: Stop & Kill is not applicable to Type 4 entities, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 568 for (rvm_swe_array[swe_index].nb_using_appli=0,i=0; i<RVM_MAX_SWE_USING; i++) { //reset using appli - workaround! | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 569 rvm_swe_array[swe_index].using_appli[i] = RVM_INVALID_SWE_INDEX; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 570 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 571 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 572 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 573 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 574 /* Retrieve stop function with a get_info */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 575 if (rvm_swe_array[swe_index].swe_get_info == NULL) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 576 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 577 RVM_TRACE_WARNING_PARAM("RVM: SWE with no get info, cannot be stopped, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 578 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 579 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 580 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 581 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 582 rvm_swe_array[swe_index].swe_get_info( &swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 583 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 584 if (cur_swe->rvm_functions.stop == NULL) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 585 RVM_TRACE_WARNING_PARAM("RVM: SWE with no stop function, cannot be stopped, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 586 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 587 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 588 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 589 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 590 if (rvf_get_buf( rvm_mem_bank, sizeof(T_RVM_STOP_MSG), (void **)&p_msg) == RVF_RED ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 591 RVM_TRACE_WARNING_PARAM("RVM: Unable to create STOP msg, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 592 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 593 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 594 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 595 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 596 p_msg->header.msg_id = RVM_STOP_MSG; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 597 p_msg->header.src_addr_id = hdr->src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 598 p_msg->header.dest_addr_id = hdr->dest_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 599 // p_msg->header.callback_func = hdr->callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 600 p_msg->rp.callback_func = ((T_RVM_STOP_MSG*)hdr)->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 601 p_msg->status = SWE_STOPPING; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 602 p_msg->swe_num = swe_index; //((T_RVM_STOP_MSG*)hdr)->swe_num; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 603 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 604 if ( rvf_send_msg( rvm_swe_array[swe_index].swe_addr_id, p_msg) != RVF_OK) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 605 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 606 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 607 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 608 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 609 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 610 rvm_swe_array[swe_index].swe_state=SWE_STOPPING; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 611 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 612 /*printf("SHUTDOWN: SWE %s nb %d USING APPLI= %d\n",rvm_swe_array[swe_index].swe_name, swe_index, rvm_swe_array[swe_index].nb_using_appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 613 for(i=0; i<rvm_swe_array[swe_index].nb_using_appli; i++)printf(" %d, ", rvm_swe_array[swe_index].using_appli[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 614 printf("\n");*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 615 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 616 for (rvm_swe_array[swe_index].nb_using_appli=0,i=0; i<RVM_MAX_SWE_USING; i++) { //reset using appli - workaround! | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 617 rvm_swe_array[swe_index].using_appli[i] = RVM_INVALID_SWE_INDEX; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 618 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 619 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 620 /*printf("SHUTDOWN: SWE %s nb %d USING APPLI= %d\n",rvm_swe_array[swe_index].swe_name, swe_index, rvm_swe_array[swe_index].nb_using_appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 621 for(i=0; i<rvm_swe_array[swe_index].nb_using_appli; i++)printf(" %d, ", rvm_swe_array[swe_index].using_appli[i]); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 622 printf("\n");*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 623 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 624 /* Stop SWE - amended to ASYNC */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 625 /* TO DO: for type 2 and 3 SWEs, send a message to the host to call the stop function */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 626 //cur_swe->rvm_functions.stop(NULL); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 627 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 628 /* Proceed to the next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 629 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 630 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 631 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 632 return rvm_ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 633 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 634 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 635 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 636 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 637 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 638 ** Function rvm_suspend_swe_tasks | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 639 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 640 ** Description This function will suspend all SWE that are tasks. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 641 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 642 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 643 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 644 ** Returns T_RVM_OK if all allocation are successful, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 645 ** else T_RVM_INTERNAL_ERR (then some SWE are not stopped. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 646 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 647 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 648 T_RVM_RETURN rvm_suspend_swe_tasks( T_RVM_PROCESSING_SWE * appli) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 649 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 650 T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 651 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 652 volatile T_RVM_RETURN rvm_ret_value = RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 653 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 654 /* for each SWE in the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 655 while (cur_swe != NULL ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 656 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 657 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 658 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 659 /* If nb_using_appli > 1, SWE cannot be stopped */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 660 if (rvm_swe_array[swe_index].nb_using_appli > 1) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 661 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 662 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 663 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 664 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 665 /* If nb_using_appli == 1 but using_appli != appli, SWE cannot be stopped */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 666 if ((rvm_swe_array[swe_index].nb_using_appli == 1) && \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 667 (rvm_swe_array[swe_index].using_appli[0] != appli->swe_id)) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 668 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 669 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 670 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 671 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 672 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 673 /* Retrieve task info with a get_info */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 674 if (rvm_swe_array[swe_index].swe_get_info == NULL) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 675 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 676 RVM_TRACE_WARNING_PARAM("RVM: SWE with no get info, cannot be stopped, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 677 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 678 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 679 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 680 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 681 rvm_swe_array[swe_index].swe_get_info( &swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 682 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 683 /* If SWE is not a task, continue */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 684 /* TO DO: manage group member SWEs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 685 if ( (swe_info.swe_type == RVM_SWE_TYPE_1) || | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 686 (swe_info.swe_type == RVM_SWE_TYPE_2) ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 687 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 688 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 689 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 690 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 691 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 692 /* Suspend SWE task */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 693 rvf_suspend_task( (UINT8)rvm_swe_array[swe_index].swe_return_path.addr_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 694 RVM_TRACE_DEBUG_LOW_PARAM("RVM: Suspended task nb ", (UINT32) (rvm_swe_array[swe_index].swe_return_path.addr_id & 0x000000FF) ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 695 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 696 /* Proceed to the next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 697 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 698 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 699 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 700 return rvm_ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 701 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 702 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 703 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 704 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 705 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 706 ** Function rvm_kill_swe_list | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 707 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 708 ** Description This function will call the kill functions when possible. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 709 ** It will also delete the task, the stack and the used MBs. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 710 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 711 ** Parameters: T_RVM_PROCESSING_SWE * appli: list of required SWEs with their parameters. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 712 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 713 ** Returns T_RVM_OK if everything is successful, | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 714 ** else T_RVM_INTERNAL_ERR (then some SWE are not killed). | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 715 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 716 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 717 T_RVM_RETURN rvm_kill_swe_list( T_RVM_PROCESSING_SWE * appli) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 718 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 719 T_RVM_PROCESSING_SWE * cur_swe = appli; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 720 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 721 volatile T_RVM_RETURN rvm_ret_value = RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 722 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 723 /* for each SWE in the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 724 while (cur_swe != NULL ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 725 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 726 UINT8 swe_index = cur_swe->swe_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 727 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 728 /* If nb_using_appli > 1, SWE cannot be killed */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 729 if (rvm_swe_array[swe_index].nb_using_appli > 1) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 730 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 731 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 732 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 733 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 734 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 735 /* If nb_using_appli == 1 but using_appli != appli, SWE cannot be killed */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 736 if ((rvm_swe_array[swe_index].nb_using_appli == 1) && \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 737 (rvm_swe_array[swe_index].using_appli[0] != appli->swe_id)) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 738 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 739 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 740 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 741 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 742 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 743 /* Retrieve kill function with a get_info */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 744 if (rvm_swe_array[swe_index].swe_get_info == NULL) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 745 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 746 RVM_TRACE_WARNING_PARAM("RVM: SWE with no get info, cannot be killed, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 747 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 748 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 749 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 750 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 751 rvm_swe_array[swe_index].swe_get_info( &swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 752 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 753 if (cur_swe->rvm_functions.kill == NULL) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 754 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 755 RVM_TRACE_WARNING_PARAM("RVM: SWE with no kill function, cannot be killed, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 756 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 757 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 758 continue; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 759 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 760 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 761 /* Kill SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 762 cur_swe->rvm_functions.kill(); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 763 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 764 /* TO DO: manage group member SWEs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 765 /* If the SWE is a task, the task should be deleted, as well as its stack */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 766 if ( (swe_info.swe_type == RVM_SWE_TYPE_3) || | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 767 (swe_info.swe_type == RVM_SWE_TYPE_4) ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 768 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 769 rvf_exit_task((UINT8)(rvm_swe_array[swe_index].swe_return_path.addr_id)); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 770 rvf_free_buf(rvm_swe_array[swe_index].stack_ptr); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 771 RVM_TRACE_DEBUG_LOW_PARAM("RVM: Deleted task nb ", (UINT32)(rvm_swe_array[swe_index].swe_return_path.addr_id & 0x000000FF)); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 772 rvf_free_sys_resources(rvm_swe_array[swe_index].swe_addr_id, 2); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 773 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 774 } else if(swe_info.swe_type == RVM_SWE_TYPE_2) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 775 rvf_free_sys_resources(rvm_swe_array[swe_index].swe_addr_id, 0); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 776 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 777 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 778 /* Proceed to the next SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 779 cur_swe = cur_swe->next_swe; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 780 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 781 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 782 return rvm_ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 783 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 784 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 785 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 786 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 787 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 788 ** Function rvm_launch_appli | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 789 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 790 ** Description Called by the main RVM task to start a specified known application | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 791 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 792 ** Parameters: T_RVM_MSG msg: containing the return path and the index of the | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 793 ** application to start in the array of known SWEs. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 794 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 795 ** Returns None | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 796 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 797 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 798 void rvm_launch_appli( T_RVM_MSG * msg_Ptr) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 799 T_RVM_GROUP_DIRECTIVE GroupDirectives[MAX_GRPS]; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 800 UINT8 gdCount=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 801 T_RVM_PROCESSING_SWE * appli = NULL; /* pointer to the first element of the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 802 T_RV_RETURN_PATH appli_return_path; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 803 UINT8 i,j=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 804 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 805 for(i=0; i<MAX_GRPS; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 806 GroupDirectives[i].group_directive=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 807 GroupDirectives[i].host_task_addr=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 808 GroupDirectives[i].stack_size=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 809 memset(&GroupDirectives[i].hosted_swe_db_index, 0, (sizeof(UINT8)*MAX_COMPOSITES)); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 810 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 811 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 812 /* store the return path of the caller */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 813 appli_return_path.callback_func = msg_Ptr->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 814 appli_return_path.addr_id = msg_Ptr->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 815 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 816 /* recursively call all get_info functions and build the list of running swe */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 817 if ( rvm_build_swe_list( &appli, msg_Ptr->swe_num, 0) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 818 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 819 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 820 error case: use the return_path to inform the caller that an error occurs*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 821 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_INVALID_PARAMETER, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 822 RVM_TRACE_ERROR("RVM: SWE list built error"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 823 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 824 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 825 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 826 gdCount=_resolve_t2_grouping(appli, GroupDirectives); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 827 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 828 if(!appli) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 829 // error case: use return_path to inform the caller about memory lack | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 830 // Unlock state of SWE and free memory | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 831 RVM_TRACE_WARNING_PARAM("RVM: ABORTED, Stand-alone ENTITY start request!", (UINT32)msg_Ptr->swe_num); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 832 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_NOT_READY, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 833 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 834 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 835 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 836 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 837 RVM_TRACE_DEBUG_HIGH("RVM: SWE list built success"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 838 RVM_TRACE_DEBUG_HIGH_PARAM("RVM: trying to launch SWE", rvm_swe_array[appli->swe_id].swe_use_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 839 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 840 /* check if there is enough available memory */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 841 if ( rvm_verify_memory_requirement( appli, GroupDirectives, gdCount) != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 842 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 843 /* error case: use return_path to inform the caller about memory lack */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 844 /* Unlock state of SWE and free memory */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 845 RVM_TRACE_WARNING_PARAM("RVM: SWE not enough memory: unable to launch Appli nb", (UINT32)appli->swe_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 846 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_MEMORY_ERR, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 847 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 848 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 849 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 850 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 851 /* allocates memory banks */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 852 if ( rvm_allocate_mb( appli) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 853 { /* error case: use return_path to inform the caller about memory lack */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 854 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 855 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_MEMORY_ERR, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 856 RVM_TRACE_WARNING("RVM: SWE memory bank allocation error - launch aborted!"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 857 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 858 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 859 RVM_TRACE_DEBUG_LOW("RVM: SWE memory bank allocation success"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 860 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 861 /* call set_info function for each SWE */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 862 if ( rvm_set_swe_info( appli) != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 863 { /* error case: use return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 864 RVM_TRACE_WARNING("RVM: SWE set info functions error"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 865 _fatal(appli, 0); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 866 rvm_delete_created_mb(appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 867 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 868 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_INTERNAL_ERR, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 869 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 870 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 871 RVM_TRACE_DEBUG_LOW("RVM: SWE set info functions called"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 872 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 873 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 874 /* call the init and start functions */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 875 if ( rvm_initialize_swe( appli, GroupDirectives, gdCount) != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 876 { /* error case: use return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 877 RVM_TRACE_WARNING("RVM: SWE initialization error"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 878 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_INTERNAL_ERR, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 879 _fatal(appli, 2); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 880 rvm_delete_created_mb(appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 881 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 882 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 883 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 884 RVM_TRACE_DEBUG_LOW("RVM: SWE initialization success"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 885 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 886 /* build a message and send the response to the caller */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 887 /* send a result using the return_path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 888 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_OK, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 889 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 890 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 891 /* and store the return_path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 892 rvm_swe_array[ msg_Ptr->swe_num ].mmi_return_path.callback_func = msg_Ptr->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 893 rvm_swe_array[ msg_Ptr->swe_num ].mmi_return_path.addr_id = msg_Ptr->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 894 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 895 /* Once Everything is back in stand-by, release used memory */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 896 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 897 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 898 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 899 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 900 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 901 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 902 ** Function rvm_shut_down_appli | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 903 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 904 ** Description Called by the main RVM task to stop a specified known application | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 905 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 906 ** Parameters: T_RVM_MSG msg: containing the return path and the index of the | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 907 ** application to stop in the array of known SWEs. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 908 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 909 ** Returns None | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 910 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 911 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 912 void rvm_stop_appli( T_RVM_STOP_MSG* msg_Ptr) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 913 T_RVM_PROCESSING_SWE * appli = NULL; /* pointer to the first element of the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 914 T_RVM_RETURN ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 915 UINT8 swe_idx = 200; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 916 T_RV_RETURN_PATH appli_return_path; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 917 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 918 appli_return_path.callback_func = msg_Ptr->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 919 appli_return_path.addr_id = msg_Ptr->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 920 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 921 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 922 RVM_TRACE_DEBUG_HIGH_PARAM("RVM: trying to stop Appli nb ", (UINT32)swe_idx); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 923 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 924 if (rvm_swe_array[msg_Ptr->swe_num].nb_using_appli > 1) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 925 RVM_TRACE_WARNING_PARAM("RVM: SWE has dependencies, nb=", (UINT32)msg_Ptr->swe_num); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 926 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 927 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 928 // ??? If nb_using_appli == 1 but using_appli != appli, SWE cannot be stopped | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 929 if ((rvm_swe_array[msg_Ptr->swe_num].nb_using_appli == 1) && \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 930 (rvm_swe_array[msg_Ptr->swe_num].using_appli[0] != msg_Ptr->swe_num)) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 931 RVM_TRACE_WARNING_PARAM("RVM: SWE has dependencies, nb=", (UINT32)msg_Ptr->swe_num); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 932 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 933 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 934 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 935 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 936 /* TO DO : REBUILD SWE LIST !!!! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 937 if ( rvm_build_swe_list( &appli, msg_Ptr->swe_num, 1) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 938 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 939 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 940 error case: use the return_path to inform the caller that an error occurs*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 941 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_INVALID_PARAMETER, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 942 RVM_TRACE_ERROR("RVM: SWE list built error"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 943 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 944 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 945 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 946 /* Stop all swe in the list that are used only once */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 947 if ((ret_value = rvm_stop_swe_list(appli, (T_RV_HDR*)msg_Ptr)) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 948 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 949 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 950 TO DO: error case: use the return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 951 RVM_TRACE_WARNING_PARAM("RVM: Error in SWE stop", (UINT32)ret_value); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 952 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 953 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 954 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 955 rvm_delete_used_memory (appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 956 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 957 RVM_TRACE_DEBUG_LOW("RVM: SWE stop broadcast!"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 958 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 959 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 960 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 961 // NOTE: presently no timeout exists, if the ENT. fails to reply | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 962 // to stop with rvm_swe_stopped() RVM doesn't kill it. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 963 void rvm_swe_has_stopped(T_RVM_STOP_MSG* msg) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 964 T_RVM_STOP_MSG* p_msg=(T_RVM_STOP_MSG*)msg; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 965 T_RV_RETURN_PATH appli_return_path; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 966 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 967 appli_return_path.callback_func = msg->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 968 appli_return_path.addr_id = msg->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 969 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 970 if(msg->status!=SWE_STOPPING) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 971 // inform upper of problem | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 972 rvm_snd_msg_to_upper(RVM_STOP_APPLI, RVM_INVALID_PARAMETER, msg->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 973 RVM_TRACE_ERROR("RVM: Entity declines STOP REQ"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 974 rvf_free_msg((T_RV_HDR*)msg); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 975 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 976 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 977 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 978 // cont. with shutdown - MUST DO ERROR CASE ! | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 979 rvm_shutdown_swe(p_msg->swe_num); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 980 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 981 // set stopped status | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 982 rvm_swe_array[p_msg->swe_num].swe_state=SWE_KILLED; //SWE_STOPPING; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 983 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 984 /* build a message and send the response to the caller */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 985 /* send a result using the return_path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 986 if(rvm_get_mb_level(p_msg->swe_num) ){ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 987 rvm_snd_msg_to_upper(RVM_STOP_APPLI, RV_MEMORY_REMAINING, msg->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 988 } else { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 989 rvm_snd_msg_to_upper(RVM_STOP_APPLI, RVM_OK, msg->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 990 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 991 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 992 /* and store the return_path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 993 rvm_swe_array[ msg->swe_num ].mmi_return_path.callback_func = msg->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 994 rvm_swe_array[ msg->swe_num ].mmi_return_path.addr_id = msg->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 995 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 996 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 997 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 998 void rvm_shutdown_swe(UINT8 index) { //should ret. ok or fail | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 999 rvm_suspend_swe(index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1000 rvm_kill_swe(index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1001 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1002 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1003 void rvm_suspend_swe(UINT8 swe_index) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1004 volatile T_RVM_RETURN rvm_ret_value = RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1005 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1006 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1007 /* ??? If nb_using_appli > 1, SWE cannot be stopped | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1008 if (rvm_swe_array[swe_index].nb_using_appli > 1) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1009 RVM_TRACE_WARNING_PARAM("RVM-SUSPEND: SWE has dependencies, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1010 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1011 // ??? If nb_using_appli == 1 but using_appli != appli, SWE cannot be stopped | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1012 if ((rvm_swe_array[swe_index].nb_using_appli == 1) && \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1013 (rvm_swe_array[swe_index].using_appli[0] != swe_index)) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1014 RVM_TRACE_WARNING_PARAM("RVM-SUSPEND: SWE has dependencies, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1015 }*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1016 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1017 /* Retrieve task info with a get_info */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1018 if (rvm_swe_array[swe_index].swe_get_info == NULL) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1019 RVM_TRACE_WARNING_PARAM("RVM: SWE with no get info, cannot be stopped, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1020 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1021 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1022 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1023 rvm_swe_array[swe_index].swe_get_info( &swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1024 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1025 /* If SWE is not a task, continue */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1026 /* TO DO: manage group member SWEs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1027 if ( (swe_info.swe_type == RVM_SWE_TYPE_1) || | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1028 (swe_info.swe_type == RVM_SWE_TYPE_2) ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1029 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1030 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1031 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1032 /* Suspend SWE task */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1033 rvf_suspend_task( (UINT8)rvm_swe_array[swe_index].swe_return_path.addr_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1034 RVM_TRACE_DEBUG_LOW_PARAM("RVM: Suspended task nb ", (UINT32) (rvm_swe_array[swe_index].swe_return_path.addr_id & 0x000000FF) ); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1035 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1036 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1037 T_RVM_RETURN rvm_kill_swe(UINT8 swe_index) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1038 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1039 volatile T_RVM_RETURN rvm_ret_value = RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1040 UINT8 isVirtual=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1041 T_RVF_G_ADDR_ID gid=RVF_INVALID_ADDR_ID; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1042 UINT8 isIdle=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1043 UINT8 i=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1044 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1045 /* If nb_using_appli > 1, SWE cannot be killed | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1046 if (rvm_swe_array[swe_index].nb_using_appli > 1) return rvm_ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1047 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1048 // If nb_using_appli == 1 but using_appli != appli, SWE cannot be killed | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1049 if ((rvm_swe_array[swe_index].nb_using_appli == 1) && \ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1050 (rvm_swe_array[swe_index].using_appli[0] != swe_index)) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1051 RVM_TRACE_WARNING_PARAM("RVM-KILL: SWE has dependencies, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1052 return rvm_ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1053 }*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1054 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1055 /* Retrieve kill function with a get_info */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1056 if (rvm_swe_array[swe_index].swe_get_info == NULL){ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1057 RVM_TRACE_WARNING_PARAM("RVM-KILL: SWE has no kill function defined, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1058 rvm_ret_value = RVM_INTERNAL_ERR; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1059 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1060 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1061 rvm_swe_array[swe_index].swe_get_info(&swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1062 switch( swe_info.swe_type) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1063 case RVM_SWE_TYPE_1: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1064 // if(swe_info.type_info.type1.kill) swe_info.type_info.type1.kill() ; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1065 isVirtual=1; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1066 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1067 case RVM_SWE_TYPE_2: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1068 gid=resolveHostAddrId(rvm_swe_array[swe_index].swe_addr_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1069 rvf_unregisterFromHost(gid, rvm_swe_array[swe_index].swe_addr_id); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1070 rvf_isHostingTaskIdle(gid, &isIdle); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1071 if(isIdle) { // Defered suspend of hosting task: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1072 rvf_suspend_task(gid); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1073 rvf_exit_task(gid); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1074 rvf_free_sys_resources(gid, 2); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1075 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1076 if(swe_info.type_info.type2.kill) swe_info.type_info.type2.kill(); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1077 isVirtual=1; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1078 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1079 case RVM_SWE_TYPE_3: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1080 if(swe_info.type_info.type3.kill) swe_info.type_info.type3.kill(); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1081 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1082 case RVM_SWE_TYPE_4: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1083 if(swe_info.type_info.type4.kill) swe_info.type_info.type4.kill(); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1084 break; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1085 default: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1086 RVM_TRACE_WARNING_PARAM("RVM: SWE with no kill function, cannot be killed, nb=", (UINT32)swe_index); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1087 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1088 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1089 if(!isVirtual) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1090 rvf_exit_task((UINT8)(rvm_swe_array[swe_index].swe_return_path.addr_id)); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1091 rvf_free_buf(rvm_swe_array[swe_index].stack_ptr); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1092 RVM_TRACE_DEBUG_LOW_PARAM("RVM: Deleted task nb ", (UINT32)(rvm_swe_array[swe_index].swe_return_path.addr_id & 0x000000FF)); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1093 rvf_free_sys_resources(rvm_swe_array[swe_index].swe_addr_id, 2); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1094 } else { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1095 rvf_free_sys_resources(rvm_swe_array[swe_index].swe_addr_id, 0); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1096 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1097 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1098 return rvm_ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1099 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1100 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1101 UINT8 rvm_get_mb_level(UINT8 swe_index) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1102 T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1103 INT8 i=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1104 UINT8 isUsed=0; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1105 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1106 rvm_swe_array[swe_index].swe_get_info(&swe_info); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1107 switch( swe_info.swe_type) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1108 case RVM_SWE_TYPE_1: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1109 if(swe_info.type_info.type1.nb_mem_bank!=0) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1110 for(i=0; i<swe_info.type_info.type1.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1111 rvf_mb_is_used(swe_info.type_info.type1.mem_bank[i].bank_name, &isUsed); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1112 if(isUsed) return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1113 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1114 return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1115 case RVM_SWE_TYPE_2: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1116 if(swe_info.type_info.type2.nb_mem_bank!=0) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1117 for(i=0; i<swe_info.type_info.type2.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1118 rvf_mb_is_used(swe_info.type_info.type2.mem_bank[i].bank_name, &isUsed); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1119 if(isUsed) return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1120 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1121 return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1122 case RVM_SWE_TYPE_3: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1123 if(swe_info.type_info.type3.nb_mem_bank!=0) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1124 for(i=0; i<swe_info.type_info.type3.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1125 rvf_mb_is_used(swe_info.type_info.type3.mem_bank[i].bank_name, &isUsed); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1126 if(isUsed) return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1127 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1128 return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1129 case RVM_SWE_TYPE_4: | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1130 if(swe_info.type_info.type4.nb_mem_bank!=0) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1131 for(i=0; i<swe_info.type_info.type4.nb_mem_bank; i++) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1132 rvf_mb_is_used(swe_info.type_info.type4.mem_bank[i].bank_name, &isUsed); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1133 if(isUsed) return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1134 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1135 return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1136 default: RVM_TRACE_DEBUG_LOW("RVM: Error rvm_get_mb_level()"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1137 return isUsed; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1138 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1139 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1140 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1141 void rvm_shut_down_appli( T_RVM_MSG * msg_Ptr) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1142 T_RVM_PROCESSING_SWE * appli = NULL; /* pointer to the first element of the list */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1143 T_RVM_RETURN ret_value; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1144 UINT8 swe_idx = 200; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1145 T_RV_RETURN_PATH appli_return_path; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1146 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1147 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1148 appli_return_path.callback_func = msg_Ptr->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1149 appli_return_path.addr_id = msg_Ptr->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1150 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1151 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1152 RVM_TRACE_DEBUG_HIGH_PARAM("RVM: trying to stop Appli nb ", (UINT32)swe_idx); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1153 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1154 /* TO DO : REBUILD SWE LIST !!!! */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1155 if ( rvm_build_swe_list( &appli, msg_Ptr->swe_num, 1) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1156 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1157 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1158 error case: use the return_path to inform the caller that an error occurs*/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1159 rvm_snd_msg_to_upper(RVM_START_APPLI, RVM_INVALID_PARAMETER, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1160 RVM_TRACE_ERROR("RVM: SWE list built error"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1161 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1162 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1163 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1164 /* Stop all swe in the list that are used only once */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1165 if ((ret_value = rvm_stop_swe_list(appli, (T_RV_HDR*)msg_Ptr)) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1166 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1167 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1168 TO DO: error case: use the return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1169 RVM_TRACE_WARNING_PARAM("RVM: Error in SWE stop", (UINT32)ret_value); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1170 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1171 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1172 RVM_TRACE_DEBUG_LOW("RVM: SWE stop success"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1173 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1174 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1175 /* Suspend all swe that are tasks */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1176 if ((ret_value = rvm_suspend_swe_tasks(appli)) != RVM_OK ) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1177 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1178 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1179 TO DO: error case: use the return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1180 RVM_TRACE_WARNING_PARAM("RVM: Error in tasks suspension", (UINT32)ret_value); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1181 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1182 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1183 RVM_TRACE_DEBUG_LOW("RVM: SWE task supsended"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1184 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1185 /* Kill all SWEs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1186 if ((ret_value = rvm_kill_swe_list(appli)) != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1187 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1188 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1189 TO DO: error case: use the return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1190 RVM_TRACE_WARNING_PARAM("RVM: Error in SWE killing", (UINT32)ret_value); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1191 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1192 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1193 RVM_TRACE_DEBUG_LOW("RVM: SWE kill success"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1194 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1195 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1196 /* Delete the swe Memory Banks */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1197 rvm_delete_created_mb(appli); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1198 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1199 /* Delete memory used and restore NOT_STARTED states */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1200 if ((ret_value = rvm_clean_env(appli)) != RVM_OK) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1201 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1202 /* Display error message | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1203 TO DO: error case: use the return_path to inform the caller that an error occurs */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1204 RVM_TRACE_WARNING_PARAM("RVM: Error in Memory cleaning", (UINT32)ret_value); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1205 return; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1206 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1207 RVM_TRACE_DEBUG_LOW("RVM: Memory cleaning success"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1208 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1209 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1210 /* build a message and send the response to the caller */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1211 /* send a result using the return_path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1212 rvm_snd_msg_to_upper(RVM_STOP_APPLI, RVM_OK, msg_Ptr->swe_num, appli_return_path); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1213 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1214 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1215 /* and store the return_path */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1216 rvm_swe_array[ msg_Ptr->swe_num ].mmi_return_path.callback_func = msg_Ptr->rp.callback_func; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1217 rvm_swe_array[ msg_Ptr->swe_num ].mmi_return_path.addr_id = msg_Ptr->header.src_addr_id; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1218 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1219 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1220 T_RVM_RETURN _fatal( T_RVM_PROCESSING_SWE * appli, UINT8 rm) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1221 T_RVM_PROCESSING_SWE * cur_swe = NULL; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1222 // T_RVM_INFO_SWE swe_info; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1223 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1224 RVM_TRACE_DEBUG_LOW("RVM: Fatality handler: reclaiming system resources!"); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1225 /* free all appli's system resources */ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1226 for (cur_swe = appli; cur_swe!=NULL; ) { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1227 if(rvm_swe_array[cur_swe->swe_id].swe_state!=SWE_RUNNING) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1228 rvf_free_sys_resources(rvm_swe_array[cur_swe->swe_id].swe_addr_id, rm); | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1229 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1230 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1231 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1232 return RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1233 } | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1234 | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1235 /******************************************************************************* | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1236 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1237 ** Function rvm_generic_swe_core | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1238 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1239 ** Description This is the main task core used for GROUP_MEMBER SWEs hosting | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1240 ** and for SINGLE SWEs. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1241 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1242 ** Parameters: useless, may be for future evolutions if Nucleus really | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1243 ** supports it. | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1244 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1245 ** Returns None | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1246 ** | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1247 *******************************************************************************/ | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1248 T_RVM_RETURN rvm_generic_swe_core(void) | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1249 { | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1250 return RVM_OK; | 
| 
509db1a7b7b8
initial import: leo2moko-r1
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1251 } | 
