FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/riviera/rvf/rvf_task.c @ 453:d2b93cfe8e4c
OSL: os_sem_ir.c done
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Mon, 23 Jun 2014 03:26:30 +0000 | 
| parents | afceeeb2cba1 | 
| children | 
| rev | line source | 
|---|---|
| 118 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1 /****************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 2 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 3 /* Name rvf_task.c */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 4 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 5 /* Function this file contains \rvf task related functions */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 6 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 7 /* Version 0.1 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 8 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 9 /* Date Modification */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 10 /* ------------------------------------ */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 11 /* 3/12/99 Create */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 12 /* 10/27/99 remove all non-nucleus sections (#ifdef) */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 13 /* change tasks priority and time_slicing */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 14 /* 11/17/1999 change RVF_create_task and RVF_get_taskid functions */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 15 /* 30/11/99 compliant to RV coding guidelines */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 16 /* 28/08/2000 add mutex related functions. */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 17 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 18 /* Author David Lamy-Charrier (dlamy@tif.ti.com) */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 19 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 20 /* (C) Copyright 1999 by Texas Instruments Incorporated, All Rights Reserved*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 21 /****************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 22 | 
| 120 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 23 #include "../../include/config.h" | 
| 118 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 24 | 
| 120 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 25 #include "../rv/rv_general.h" | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 26 #include "rvf_api.h" | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 27 #include "rvf_i.h" | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 28 #include "../rvm/rvm_i.h" /* ONLY for Task Codes */ | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 29 #include "../rvm/rvm_use_id_list.h" | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 30 | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 31 #include "../../nucleus/nucleus.h" | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 32 | 
| 118 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 33 #include <stdio.h> | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 34 #include <string.h> | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 35 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 36 /* include the rvtool_trace.h file only in the RivieraTool */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 37 #ifdef _WINDOWS | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 38 #ifndef _CONSOLE | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 39 // #include "rvtool_trace.h" | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 40 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 41 #include <windows.h> | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 42 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 43 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 44 #define RVF_STATIC_ALLOC_NB 1 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 45 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 46 /********************************************************************** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 47 ** Nucleus specific definitions | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 48 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 49 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 50 typedef void (*NU_TASK_ENTRY)(UNSIGNED, VOID *); // | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 51 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 52 /* array of tasks */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 53 /********************************************************************** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 54 * Note: if dynamic mem alloc of "pOSTCB" creates too much fragentation | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 55 * The origianl way me be utilised and pointed to by a addr_id table | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 56 * structure, which is proposed for type 2 support. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 57 ***********************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 58 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 59 #define _RALLOC_TASK_CNTRL_BLK(tb) rvf_get_buf(rvm_sys_mem_bank, sizeof(NU_TASK), tb) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 60 #define _RALLOC_TASK_EVT_GRP(tb) rvf_get_buf(rvm_sys_mem_bank, sizeof(NU_EVENT_GROUP), tb) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 61 #define _RALLOC_TASK_RT_ADDR_DATA(tb) rvf_get_buf(rvm_sys_mem_bank, sizeof(T_RVF_RT_ADDR_ID_DATA), tb) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 62 //#define _RALLOC_TASK_RT_TM(tb) rvf_get_buf(rvm_sys_mem_bank, sizeof(T_RVF_TIMER_LIST_Q), tb) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 63 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 64 /*static NU_TASK bOSTCB[RVF_STATIC_ALLOC_NB]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 65 static NU_EVENT_GROUP bOSEvtGrp[RVF_STATIC_ALLOC_NB]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 66 static UINT8 *bOSStack; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 67 static UINT16 bOSStackSize; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 68 static char bOSTName[RVF_STATIC_ALLOC_NB][RVF_STATIC_ALLOC_NB]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 69 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 70 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 71 static UINT8 task_counter = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 72 static INT16 OSDisableNesting = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 73 static BOOL OSInterruptAlreadyMasked = FALSE; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 74 static INT32 OSLastIntLevel; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 75 static T_RVF_G_ADDR_ID _RDV=RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 76 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 77 T_RVF_RET _initSysRtData(void); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 78 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 79 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 80 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 81 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 82 ** Function rvf_AllocTaskXyz() | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 83 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 84 ** Description | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 85 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 86 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 87 ** Returns T_RVF_MB_STATUS | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 88 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 89 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 90 T_RVF_RET _initSysRtData(void) { /*A-M-E-N-D-E-D!*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 91 int i=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 92 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 93 for (i=0; i < MAX_RVF_G_ADDR_ID; i++) pRtAddrIdTable[i]=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 94 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 95 // pOSTCB[0]=&OSTCB[0]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 96 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 97 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 98 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 99 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 100 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 101 ** Function rvf_init | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 102 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 103 ** Description This function is called once at startup to initialize | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 104 ** all the rvf (timer, buffer...). | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 105 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 106 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 107 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 108 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 109 void rvf_init(void) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 110 /* UINT8 i; */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 111 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 112 /* Initialize RVF variables */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 113 /*for (i = 0; i < MAX_RVF_TASKS; i++) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 114 OSStack[i] = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 115 OSStackSize[i] = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 116 OSTName[i][0] = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 117 memset( &OSTCB[i], 0, sizeof(NU_TASK) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 118 memset( &OSEvtGrp[i], 0, sizeof(NU_EVENT_GROUP) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 119 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 120 // for (i = 0; i < 1; i++) memset( &OSTCB[i], 0, sizeof(NU_TASK) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 121 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 122 _initSysRtData(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 123 _rvf_buffer_init(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 124 _rvf_timers_init(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 125 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 126 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 127 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 128 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 129 ** Function _rvf_name_cpy | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 130 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 131 ** Description Internal function which copy a string in a buffer. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 132 ** The string may be null-terminated or length bytes long. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 133 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 134 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 135 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 136 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 137 void _rvf_name_cpy(char * dest, char * source, UINT8 length) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 138 UINT8 cpt; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 139 for( cpt = 0; cpt < length ; cpt++) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 140 dest[cpt] = source[cpt]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 141 if (source[cpt] == 0) { return;} | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 142 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 143 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 144 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 145 T_RVF_G_ADDR_ID rvf_get_context() { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 146 T_RVF_G_ADDR_ID gid=rvf_get_taskid(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 147 if(pRtAddrIdTable[gid]->type_code==ET2_HOST_TASK) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 148 return pRtAddrIdTable[gid]->virtualContext; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 149 } else { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 150 return pRtAddrIdTable[gid]->host_addr_id; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 151 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 152 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 153 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 154 void rvf_setRDV(T_RVF_G_ADDR_ID tid,T_RVF_G_ADDR_ID vid) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 155 if(pRtAddrIdTable[tid]) pRtAddrIdTable[tid]->virtualContext=vid; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 156 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 157 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 158 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 159 /************************************************************** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 160 * Function _rvf_name_cpy | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 161 * | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 162 ***************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 163 T_RVF_G_ADDR_ID rvf_allocate_task_id(UINT8 isRealTask) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 164 T_RVF_G_ADDR_ID i=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 165 UINT8 isTask=1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 166 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 167 /* Note: differentiation is made between REAL and VIRTUAL IDs | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 168 * to provide for backwards compatabible LEGACY timer implementations | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 169 * The Real task ids should be in sync with: | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 170 * "static rvf_Timer[MAX_RVF_TASKS][RVF_NUM_TASK_TIMERS]", | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 171 * defined in "rvf_time.c". In the future, one NU_Timer blk will | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 172 * be pointed to in the rt global addr table. Hence, eliminating | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 173 * the large resource of "rvf_Timer[][]" | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 174 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 175 if(!pRtAddrIdTable[i]) return RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 176 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 177 if(isRealTask) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 178 /* REAL TASK */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 179 for(i=0; pRtAddrIdTable[i]!=NULL && i<MAX_RVF_TASKS; i++); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 180 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 181 if (i < MAX_RVF_TASKS) { /* alloc. and init. */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 182 if(_RALLOC_TASK_RT_ADDR_DATA((T_RVF_BUFFER**)&pRtAddrIdTable[i])) return RVF_INVALID_TASK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 183 memset( pRtAddrIdTable[i], 0, sizeof(T_RVF_RT_ADDR_ID_DATA) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 184 rvf_mbox_buffer_init(pRtAddrIdTable[i]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 185 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 186 } else return RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 187 } else { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 188 /* VIRTUAL TASK */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 189 for(i=MAX_RVF_TASKS; pRtAddrIdTable[i]!=NULL && i<MAX_RVF_G_ADDR_ID; i++); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 190 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 191 if (i < MAX_RVF_G_ADDR_ID) { /* alloc. and init. */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 192 if(_RALLOC_TASK_RT_ADDR_DATA((T_RVF_BUFFER**)&pRtAddrIdTable[i])) return RVF_INVALID_TASK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 193 memset( pRtAddrIdTable[i], 0, sizeof(T_RVF_RT_ADDR_ID_DATA) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 194 rvf_mbox_buffer_init(pRtAddrIdTable[i]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 195 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 196 } else return RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 197 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 198 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 199 return i; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 200 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 201 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 202 /* MUST RESOLVE ERROR CODES '1' is just for P of C */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 203 T_RVF_RET rvf_setRtAddrSweIndex(T_RVF_G_ADDR_ID id, UINT8 sweIndex) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 204 if(id>=MAX_RVF_G_ADDR_ID) return 1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 205 pRtAddrIdTable[id]->swe_db_index=sweIndex; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 206 // pRtAddrIdTable[id]->type_code=tcode; /* allows type to be set if not in swe */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 207 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 208 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 209 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 210 T_RVF_RET rvf_setHostTaskStackPtr(T_RVF_G_ADDR_ID id, UINT8* pStack) { /* deprecated ! */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 211 if(id>=MAX_RVF_TASKS) return 1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 212 pRtAddrIdTable[id]->p_os_stack=pStack; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 213 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 214 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 215 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 216 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 217 T_RVF_RET rvf_isHostingTaskIdle(T_RVF_G_ADDR_ID id, UINT8* status) { /* deprecated ! */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 218 if(id>=MAX_RVF_TASKS) return RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 219 if(!pRtAddrIdTable[id]) return RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 220 if(pRtAddrIdTable[id]->type_code!=ET2_HOST_TASK) return RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 221 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 222 if(pRtAddrIdTable[id]->hosting_count==0) *status=1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 223 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 224 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 225 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 226 /* convenience/helper fnc. */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 227 T_RVF_G_ADDR_ID resolveHostAddrId(T_RVF_G_ADDR_ID id) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 228 if(!pRtAddrIdTable[id]) return RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 229 return pRtAddrIdTable[id]->host_addr_id; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 230 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 231 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 232 /* HostingCounter enables one to deduce if task can be terminated */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 233 /* ERROR return val must be revised */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 234 T_RVF_RET rvf_registerToHost(T_RVF_G_ADDR_ID host_id, T_RVF_G_ADDR_ID eid) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 235 UINT8 i; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 236 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 237 if (host_id >= MAX_RVF_TASKS || eid >= MAX_RVF_G_ADDR_ID ) return RV_INVALID_PARAMETER;; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 238 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 239 for(i=0;pRtAddrIdTable[host_id]->parasites[i]!=0 && i < MAX_PARASITES; i++); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 240 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 241 pRtAddrIdTable[host_id]->parasites[i]=eid; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 242 pRtAddrIdTable[host_id]->hosting_count++; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 243 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 244 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 245 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 246 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 247 T_RVF_RET rvf_unregisterFromHost(T_RVF_G_ADDR_ID host_id, T_RVF_G_ADDR_ID pid) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 248 UINT8 i=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 249 if (pRtAddrIdTable[host_id]->hosting_count !=0) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 250 for(i=0; i<MAX_PARASITES || pRtAddrIdTable[host_id]->parasites[i]==pid; i++); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 251 pRtAddrIdTable[host_id]->parasites[i]=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 252 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 253 pRtAddrIdTable[host_id]->hosting_count--; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 254 } else return RV_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 255 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 256 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 257 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 258 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 259 T_RVF_RET rvf_associateGrpToHost(T_RVF_G_ADDR_ID host_id, T_RVF_GD_ID gd_id) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 260 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 261 if (host_id >= MAX_RVF_TASKS ) return RV_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 262 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 263 pRtAddrIdTable[host_id]->gdHost=gd_id; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 264 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 265 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 266 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 267 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 268 /*T_RVF_RET rvf_unregisterGrpFromHost(T_RVF_G_ADDR_ID host_id, T_RVF_G_ADDR_ID pid) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 269 if (pRtAddrIdTable[host_id]->hosting_count !=0) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 270 pRtAddrIdTable[host_id]->parasites[pid]=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 271 pRtAddrIdTable[host_id]->hosting_count--; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 272 } else return RV_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 273 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 274 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 275 }*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 276 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 277 T_RVF_G_ADDR_ID rvf_resolveHostingAddrId(T_RVM_GROUP_DIRECTIVE gd) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 278 int i=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 279 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 280 for(i=1; i<MAX_RVF_TASKS; i++) { // i=1 by-pass RVM task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 281 if(pRtAddrIdTable[i]!=NULL) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 282 if( pRtAddrIdTable[i]->type_code==ET2_HOST_TASK && | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 283 // pRtAddrIdTable[i]->priority==priority && // to do ... | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 284 // pRtAddrIdTable[i]->os_stack_size>=stack_size | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 285 pRtAddrIdTable[i]->gdHost==gd.group_directive && | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 286 pRtAddrIdTable[i]->hosting_count<MAX_PARASITES ) return i; // def. 10 A+ . | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 287 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 288 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 289 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 290 return RVF_INVALID_ADDR_ID; /* nothing found ret. param must be invalid*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 291 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 292 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 293 /********************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 294 * start() and stop() should be added to params, due to defered calling | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 295 * Allow for parasites to be added at RT and their start to be called. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 296 *********************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 297 T_RVF_RET rvf_create_virtual_task (T_RV_RET (* handle_message)(T_RV_HDR * msg), | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 298 T_RV_RET (* handle_timer)(T_RV_HDR * msg), | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 299 T_RVF_G_ADDR_ID task_id, T_RVF_G_ADDR_ID host_task_id, char *taskname, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 300 UINT8 priority, UINT8 tcode) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 301 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 302 if(!pRtAddrIdTable[task_id]) { /* allow for static init. or previous dyn init, eg. idle*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 303 if(_RALLOC_TASK_RT_ADDR_DATA((T_RVF_BUFFER**)&pRtAddrIdTable[task_id])) return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 304 memset( pRtAddrIdTable[task_id], 0, sizeof(T_RVF_RT_ADDR_ID_DATA) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 305 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 306 rvf_mbox_buffer_init(pRtAddrIdTable[task_id]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 307 } /*else printf("RVF: task rt addr %d already alloc'ed\n", task_id); */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 308 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 309 pRtAddrIdTable[task_id]->host_addr_id=host_task_id; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 310 pRtAddrIdTable[task_id]->symbolic_name=taskname; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 311 pRtAddrIdTable[task_id]->handle_message=handle_message; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 312 pRtAddrIdTable[task_id]->handle_timer=handle_timer; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 313 pRtAddrIdTable[task_id]->type_code=tcode; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 314 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 315 pRtAddrIdTable[task_id]->pOSTCB=NULL; /* init to NULL for res.'free' */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 316 pRtAddrIdTable[task_id]->pOSEvtGrp=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 317 pRtAddrIdTable[task_id]->p_os_stack=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 318 // pRtAddrIdTable[task_id]->p_tm_q=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 319 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 320 // rvf_registerToHost(host_task_id, task_id); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 321 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 322 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 323 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 324 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 325 T_RVF_RET rvf_register_t3_handlers (T_RVF_G_ADDR_ID task_id, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 326 T_RV_RET (* handle_message)(T_RV_HDR * msg), | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 327 T_RV_RET (* handle_timer)(T_RV_HDR * msg) ) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 328 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 329 pRtAddrIdTable[task_id]->handle_message=handle_message; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 330 pRtAddrIdTable[task_id]->handle_timer=handle_timer; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 331 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 332 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 333 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 334 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 335 /* RVM must create a stack with its MB and pass as params to task create */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 336 /*T_RVF_RET rvf_create_host_task (T_RV_RET (* proxy)(void), T_RVF_G_ADDR_ID task_id, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 337 char *taskname, UINT8 *stack, UINT16 stacksize, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 338 UINT8 priority, UINT8 tcode, UINT8 time_slicing, T_RVF_TASK_STATE suspend) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 339 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 340 return rvf_create_task( (TASKPTR)proxy, task_id, taskname, stack, stacksize,\ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 341 priority, tcode, time_slicing, suspend ) ; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 342 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 343 }*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 344 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 345 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 346 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 347 ** Function rvf_create_task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 348 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 349 ** Description This function is called to create a new rvf task. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 350 ** time_slice represents the number of Nucleus ticks before a task is interrupted. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 351 ** 0 for no time-slicing. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 352 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 353 ** Returns RVF_OK if successful, else an error code | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 354 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 355 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 356 T_RVF_RET rvf_create_legacy_task (TASKPTR task_entry, UINT8 task_id, char *taskname, UINT8 *stack, UINT16 stacksize, UINT8 priority, UINT8 time_slicing, T_RVF_TASK_STATE is_suspend) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 357 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 358 return rvf_create_task(task_entry,task_id,taskname,stack,stacksize,priority,ET4_TASK,time_slicing,is_suspend); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 359 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 360 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 361 T_RVF_RET rvf_create_task (TASKPTR task_entry, T_RVF_G_ADDR_ID task_id, char *taskname, UINT8 *stack, UINT16 stacksize, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 362 UINT8 priority, UINT8 tcode, UINT8 time_slicing, T_RVF_TASK_STATE suspend) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 363 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 364 /*if (task_id >= MAX_RVF_TASKS) { return 1; } */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 365 if (task_counter >= MAX_RVF_TASKS) { return 1; } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 366 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 367 /* fill the task stack with a 0xFE pattern to allow use with stack monitoring tool */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 368 memset( stack, 0xFE, stacksize ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 369 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 370 /* allow for immediate task creation, eg. no alloc taskId(), but #defined task No. Dangerous!*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 371 if(!pRtAddrIdTable[task_id]) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 372 if(_RALLOC_TASK_RT_ADDR_DATA((T_RVF_BUFFER**)&pRtAddrIdTable[task_id])) return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 373 memset( pRtAddrIdTable[task_id], 0, sizeof(T_RVF_RT_ADDR_ID_DATA) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 374 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 375 rvf_mbox_buffer_init(pRtAddrIdTable[task_id]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 376 } /*else printf("RVF: task rt addr %d already alloc'ed\n", task_id); */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 377 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 378 /*if(_RALLOC_TASK_RT_TM((T_RVF_BUFFER**)&pRtAddrIdTable[task_id]->p_tm_q)) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 379 rvf_free_buf(pRtAddrIdTable[task_id]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 380 pRtAddrIdTable[task_id]=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 381 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 382 } else pRtAddrIdTable[task_id]->p_tm_q->timerCnt=0;*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 383 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 384 pRtAddrIdTable[task_id]->hosting_count=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 385 pRtAddrIdTable[task_id]->host_addr_id=task_id; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 386 pRtAddrIdTable[task_id]->symbolic_name=taskname; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 387 pRtAddrIdTable[task_id]->priority=priority; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 388 pRtAddrIdTable[task_id]->type_code=tcode; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 389 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 390 memset(&pRtAddrIdTable[task_id]->parasites, 0, (sizeof(T_RVF_G_ADDR_ID)*MAX_PARASITES)); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 391 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 392 if (stack) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 393 pRtAddrIdTable[task_id]->p_os_stack = (UINT8 *)stack;// - stacksize; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 394 pRtAddrIdTable[task_id]->os_stack_size = stacksize; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 395 } else { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 396 // rvf_free_buf(pRtAddrIdTable[task_id]->p_tm_q); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 397 rvf_free_buf(pRtAddrIdTable[task_id]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 398 pRtAddrIdTable[task_id]=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 399 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 400 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 401 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 402 if(_RALLOC_TASK_CNTRL_BLK((T_RVF_BUFFER**)&pRtAddrIdTable[task_id]->pOSTCB)) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 403 rvf_free_buf(stack); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 404 // rvf_free_buf(pRtAddrIdTable[task_id]->p_tm_q); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 405 rvf_free_buf(pRtAddrIdTable[task_id]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 406 pRtAddrIdTable[task_id]=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 407 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 408 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 409 memset( pRtAddrIdTable[task_id]->pOSTCB, 0, sizeof(NU_TASK) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 410 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 411 if(_RALLOC_TASK_EVT_GRP((T_RVF_BUFFER**)&pRtAddrIdTable[task_id]->pOSEvtGrp)) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 412 rvf_free_buf(pRtAddrIdTable[task_id]->pOSTCB); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 413 rvf_free_buf(stack); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 414 // rvf_free_buf(pRtAddrIdTable[task_id]->p_tm_q); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 415 rvf_free_buf(pRtAddrIdTable[task_id]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 416 pRtAddrIdTable[task_id]=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 417 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 418 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 419 memset( pRtAddrIdTable[task_id]->pOSEvtGrp, 0, sizeof(NU_EVENT_GROUP) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 420 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 421 /* Create one Event Group for this task */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 422 if( NU_SUCCESS != \ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 423 NU_Create_Event_Group (pRtAddrIdTable[task_id]->pOSEvtGrp,\ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 424 taskname) ) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 425 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 426 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 427 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 428 //} | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 429 /* Create Task */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 430 if ( NU_SUCCESS != | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 431 NU_Create_Task (pRtAddrIdTable[task_id]->pOSTCB, /* Task Control Block */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 432 taskname, /*taskname,*/ /* Task Name */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 433 (NU_TASK_ENTRY )task_entry, /* Task Entry Function */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 434 0, /* why prev. task_id ??? */ /* ARGC A-M-E-N-D-E-D! */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 435 NULL, /* ARGV */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 436 pRtAddrIdTable[task_id]->p_os_stack, /* Begining of Stack */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 437 pRtAddrIdTable[task_id]->os_stack_size, /* Stack size */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 438 priority, /* Priority */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 439 time_slicing, /* Time Slicing Period*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 440 NU_PREEMPT, /* Preemption allowed */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 441 (OPTION)(suspend == RUNNING ? NU_START : NU_NO_START) )/* Start the task or suspend it */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 442 ) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 443 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 444 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 445 task_counter++; /* MUST 'DEC' ON TASK TERMINATION */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 446 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 447 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 448 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 449 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 450 /* to be called from func. 'create_tasks()' of module "create_RVtasks.c" | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 451 * utilises static alloated system variables */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 452 /*T_RVF_RET rvf_create_boot_task (TASKPTR task_entry, UINT8 task_id, char *taskname, UINT8 *stack, UINT16 stacksize, UINT8 priority, UINT8 time_slicing, T_RVF_TASK_STATE suspend) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 453 if (task_id >= MAX_RVF_TASKS) { return 1;} | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 454 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 455 if (stack) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 456 bOSStack = (UINT8 *)stack;// - stacksize; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 457 bOSStackSize = stacksize; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 458 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 459 // copy the task name into an internal buffer | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 460 _rvf_name_cpy( &(bOSTName[0][0]), taskname, RVF_MAX_TASK_LEN); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 461 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 462 // fill the task stack with a 0xFE pattern to allow use with stack monitoring tool | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 463 memset( stack, 0xFE, stacksize ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 464 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 465 // Create one Event Group for this task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 466 if( NU_SUCCESS != NU_Create_Event_Group (&bOSEvtGrp[0], taskname) ){ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 467 return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 468 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 469 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 470 // Create Task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 471 if ( NU_SUCCESS != | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 472 NU_Create_Task (&bOSTCB[0], // (reserved)Task Control Block | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 473 taskname, // Task Name | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 474 (NU_TASK_ENTRY )task_entry, // Task Entry Function | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 475 task_id, // ARGC | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 476 NULL, // ARGV | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 477 bOSStack, // Begining of Stack | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 478 stacksize, // Stack size | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 479 priority, // Priority | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 480 time_slicing, // Time Slicing Period | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 481 NU_PREEMPT, // Preemption allowed | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 482 (OPTION)(suspend == RUNNING ? NU_START : NU_NO_START) )// Start the task or suspend it | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 483 ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 484 { return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 485 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 486 task_counter++; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 487 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 488 }*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 489 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 490 /* Later timer blk must be added, once made dynamic */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 491 T_RVF_RET rvf_free_sys_resources(T_RVF_G_ADDR_ID gid, UINT8 rm) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 492 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 493 if(!pRtAddrIdTable[gid]) return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 494 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 495 if(rm==1 || rm==2) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 496 if(pRtAddrIdTable[gid]->pOSTCB)rvf_free_buf(pRtAddrIdTable[gid]->pOSTCB); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 497 if(pRtAddrIdTable[gid]->pOSEvtGrp)rvf_free_buf(pRtAddrIdTable[gid]->pOSEvtGrp); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 498 if(pRtAddrIdTable[gid]->p_os_stack)rvf_free_buf(pRtAddrIdTable[gid]->p_os_stack); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 499 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 500 task_counter--; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 501 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 502 if(rm==0 || rm==2) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 503 if(pRtAddrIdTable[gid])rvf_free_buf(pRtAddrIdTable[gid]); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 504 pRtAddrIdTable[gid]=NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 505 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 506 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 507 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 508 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 509 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 510 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 511 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 512 ** Function rvf_exit_task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 513 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 514 ** Description This function is called to stop a rvf task. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 515 ** A task can kill another task or itself. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 516 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 517 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 518 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 519 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 520 void rvf_exit_task (T_RVF_G_ADDR_ID task_id) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 521 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 522 if(!pRtAddrIdTable[task_id]) return; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 523 /* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 524 ** Empty task's mail box | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 525 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 526 _rvf_empty_mailboxes(task_id); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 527 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 528 /* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 529 ** Terminate task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 530 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 531 NU_Terminate_Task(pRtAddrIdTable[task_id]->pOSTCB); /*&OSTCB[task_id]);*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 532 NU_Delete_Task(pRtAddrIdTable[task_id]->pOSTCB); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 533 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 534 /* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 535 ** Delete related event group | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 536 */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 537 NU_Delete_Event_Group (pRtAddrIdTable[task_id]->pOSEvtGrp); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 538 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 539 pRtAddrIdTable[task_id]->p_os_stack=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 540 //OSStack[task_id] = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 541 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 542 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 543 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 544 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 545 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 546 ** Function rvf_suspend_task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 547 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 548 ** Description This function is called to suspend a rvf task. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 549 ** A task can suspend another task or itself. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 550 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 551 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 552 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 553 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 554 T_RVF_RET rvf_suspend_task (T_RVF_G_ADDR_ID task_id) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 555 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 556 if(!pRtAddrIdTable[task_id]) return RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 557 NU_Suspend_Task(pRtAddrIdTable[task_id]->pOSTCB); // A-M-E-N-D-E-D! | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 558 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 559 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 560 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 561 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 562 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 563 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 564 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 565 ** Function rvf_wait | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 566 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 567 ** Description This function is called by tasks to wait for a specific | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 568 ** event or set of events. The task may specify the duration | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 569 ** that it wants to wait for, or 0 if infinite. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 570 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 571 ** Returns the event mask of received events or zero if timeout | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 572 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 573 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 574 UINT16 rvf_wait (UINT16 flag, UINT32 timeout) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 575 T_RVF_G_ADDR_ID rtask = rvf_get_taskid(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 576 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 577 if (!timeout) timeout = 0xFFFFFFFFL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 578 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 579 return rvf_evt_wait(rtask, flag, timeout); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 580 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 581 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 582 UINT16 rvf_evt_wait(T_RVF_G_ADDR_ID rtask, UINT16 flag, UINT32 timeout) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 583 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 584 #define RVF_RET_TIME_OUT 0 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 585 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 586 UINT16 mbxEvt = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 587 UNSIGNED evt = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 588 UNSIGNED clear = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 589 STATUS status_ret; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 590 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 591 /* Check if anything in any of the mailboxes. Possible race condition. */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 592 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 593 if (rtask>=MAX_RVF_TASKS || !pRtAddrIdTable[rtask]) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 594 RVM_TRACE_WARNING_PARAM("RVF: Illegal MBOX or MBOX not ready!", rtask); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 595 return (UINT16) RVF_RET_TIME_OUT; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 596 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 597 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 598 if (pRtAddrIdTable[rtask] && pRtAddrIdTable[rtask]->OSTaskQFirst[0]) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 599 mbxEvt |= RVF_TASK_MBOX_0_EVT_MASK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 600 if (pRtAddrIdTable[rtask] && pRtAddrIdTable[rtask]->OSTaskQFirst[1]) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 601 mbxEvt |= RVF_TASK_MBOX_1_EVT_MASK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 602 if (pRtAddrIdTable[rtask] && pRtAddrIdTable[rtask]->OSTaskQFirst[2]) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 603 mbxEvt |= RVF_TASK_MBOX_2_EVT_MASK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 604 if (pRtAddrIdTable[rtask] && pRtAddrIdTable[rtask]->OSTaskQFirst[3]) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 605 mbxEvt |= RVF_TASK_MBOX_3_EVT_MASK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 606 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 607 /* If any valid event if pending, return immediately */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 608 if (mbxEvt & flag) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 609 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 610 /* Return only those bits which user wants... */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 611 evt = (UINT16) (mbxEvt & flag); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 612 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 613 /* clear the nucleus event(s) for mailboxes */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 614 if ( mbxEvt & 0x000F ) /* a mailbox event is signaled*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 615 { NU_Retrieve_Events (pRtAddrIdTable[rtask]->pOSEvtGrp, (UNSIGNED) mbxEvt & 0x000F, NU_AND_CONSUME, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 616 (UNSIGNED *)&clear, NU_NO_SUSPEND); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 617 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 618 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 619 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 620 return ((UINT16) evt); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 621 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 622 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 623 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 624 if(pRtAddrIdTable[rtask]) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 625 status_ret = NU_Retrieve_Events (pRtAddrIdTable[rtask]->pOSEvtGrp, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 626 (UNSIGNED) flag, NU_OR_CONSUME, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 627 (UNSIGNED *)&evt, timeout ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 628 if ( status_ret == NU_SUCCESS) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 629 return (UINT16) evt; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 630 } else { /* timeout or error case */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 631 return (UINT16) RVF_RET_TIME_OUT; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 632 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 633 } return (UINT16) RVF_RET_TIME_OUT; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 634 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 635 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 636 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 637 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 638 ** Function rvf_wait_for_specific_msg | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 639 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 640 ** Description This function is called by tasks to wait for a specific | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 641 ** message in the specified mailbox. The task may specify the duration | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 642 ** that it wants to wait for, or 0 if infinite. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 643 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 644 ** Returns A pointer to the message, NULL in case of time-out. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 645 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 646 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 647 T_RVF_BUFFER * rvf_wait_for_specific_msg(UINT16 msg_code, UINT8 mbox, UINT32 timeout) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 648 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 649 T_RVF_G_ADDR_ID task_id = rvf_get_taskid(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 650 T_RVF_BUFFER * p_buf = NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 651 T_RVF_INTERNAL_BUF * p_hdr; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 652 UNSIGNED clear = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 653 STATUS status_ret; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 654 UINT32 wait_time; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 655 UINT32 init_time = rvf_get_tick_count(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 656 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 657 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 658 /* check input parameter */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 659 if ( mbox >= RVF_NUM_TASK_MBOX) /* NOTE: must be def to 2 max */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 660 { rvf_send_trace( "RVF: rvf_wait_for_specific_msg(): invalid mailbox id", 52, NULL_PARAM, RV_TRACE_LEVEL_ERROR, RVM_USE_ID); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 661 return p_buf; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 662 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 663 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 664 if(!timeout) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 665 timeout = 0xFFFFFFFFL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 666 wait_time = timeout; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 667 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 668 while( (rvf_get_tick_count() - init_time) < timeout ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 669 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 670 /* test all messages in the mailbox */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 671 if( pRtAddrIdTable[task_id]->OSTaskQFirst[mbox] ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 672 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 673 rvf_disable(9); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 674 p_hdr = pRtAddrIdTable[task_id]->OSTaskQFirst[mbox]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 675 p_buf = MEM2USER(p_hdr); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 676 /* test the first one */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 677 if ( ((T_RV_HDR *)p_buf)->msg_id == msg_code ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 678 { /* message found, return it */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 679 pRtAddrIdTable[task_id]->OSTaskQFirst[mbox] = p_hdr->p_next; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 680 p_hdr->p_next = NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 681 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 682 #if RVF_ENABLE_BUF_LINKAGE_CHECK | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 683 RVF_SET_BUF_UNLINKED(p_hdr); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 684 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 685 /* clear the Nucleus Event for this mailbox */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 686 NU_Retrieve_Events( pRtAddrIdTable[task_id]->pOSEvtGrp, EVENT_MASK(mbox), NU_AND_CONSUME, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 687 (UNSIGNED *)&clear, NU_NO_SUSPEND); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 688 rvf_enable(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 689 return p_buf; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 690 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 691 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 692 while(p_hdr->p_next != NULL) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 693 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 694 p_buf = MEM2USER(p_hdr->p_next); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 695 if ( ((T_RV_HDR *)p_buf)->msg_id == msg_code ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 696 { /* remove it from the list */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 697 p_hdr->p_next = ( (T_RVF_INTERNAL_BUF *) USER2MEM(p_buf))->p_next; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 698 /* check if it the last one */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 699 if ( pRtAddrIdTable[task_id]->OSTaskQLast[mbox] == USER2MEM(p_buf) ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 700 { pRtAddrIdTable[task_id]->OSTaskQLast[mbox] = p_hdr; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 701 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 702 ((T_RVF_INTERNAL_BUF *) USER2MEM(p_buf))->p_next = NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 703 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 704 #if RVF_ENABLE_BUF_LINKAGE_CHECK | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 705 RVF_SET_BUF_UNLINKED(USER2MEM(p_buf)); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 706 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 707 rvf_enable(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 708 return p_buf; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 709 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 710 p_hdr = p_hdr->p_next; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 711 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 712 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 713 rvf_enable(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 714 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 715 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 716 /* here, the message has not been found, so wait for a new message */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 717 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 718 if ((wait_time != 0xFFFFFFFFL) && | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 719 (timeout > rvf_get_tick_count() - init_time)) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 720 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 721 /* NU_Retrieve_Events bug: cannot call function with a parameter with F in MSB */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 722 wait_time = (timeout - (rvf_get_tick_count() - init_time)) & 0x0FFFFFFFL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 723 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 724 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 725 status_ret = NU_Retrieve_Events( pRtAddrIdTable[task_id]->pOSEvtGrp, EVENT_MASK(mbox), NU_OR_CONSUME, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 726 (UNSIGNED *)&clear, wait_time); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 727 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 728 if( status_ret != NU_SUCCESS) /* time out */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 729 { return NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 730 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 731 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 732 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 733 return NULL; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 734 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 735 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 736 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 737 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 738 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 739 ** Function rvf_delay | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 740 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 741 ** Description This function is called by tasks to sleep unconditionally | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 742 ** for a specified amount of time. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 743 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 744 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 745 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 746 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 747 void rvf_delay (UINT32 timeout) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 748 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 749 if (timeout == 0) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 750 { timeout = 1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 751 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 752 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 753 NU_Sleep(timeout); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 754 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 755 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 756 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 757 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 758 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 759 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 760 ** Function rvf_send_event | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 761 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 762 ** Description This function is called by tasks to send events to other | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 763 ** tasks. Tasks can also send events to themselves. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 764 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 765 ** Returns 0 if all OK, else 1 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 766 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 767 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 768 UINT8 rvf_send_event (T_RVF_G_ADDR_ID task_id, UINT16 event) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 769 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 770 if (task_id >= MAX_RVF_TASKS || !pRtAddrIdTable[task_id] ) return 1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 771 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 772 NU_Set_Events (pRtAddrIdTable[task_id]->pOSEvtGrp, (UNSIGNED)event, NU_OR); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 773 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 774 return 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 775 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 776 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 777 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 778 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 779 ** Function rvf_get_taskid | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 780 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 781 ** Description This function gets the currently running task ID. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 782 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 783 ** Returns task ID | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 784 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 785 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 786 T_RVF_G_ADDR_ID rvf_get_taskid(void) { /* Retrieve the taskid using index of the task pointer in the OSTCB array */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 787 NU_TASK * currTask=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 788 T_RVF_G_ADDR_ID taskId=RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 789 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 790 currTask = NU_Current_Task_Pointer(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 791 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 792 if( currTask != NU_NULL) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 793 /* find the task pointer in the OSTCB array */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 794 for ( taskId = 0; taskId < MAX_RVF_TASKS; taskId++) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 795 if( (pRtAddrIdTable[taskId]!= NULL) && | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 796 ((pRtAddrIdTable[taskId]->pOSTCB)) == currTask) return taskId; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 797 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 798 return RVF_INVALID_ADDR_ID; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 799 } else { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 800 return RVF_INVALID_ADDR_ID; /* error case, must return an error code */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 801 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 802 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 803 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 804 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 805 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 806 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 807 ** Function rvf_get_taskname | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 808 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 809 ** Description This function gets the currently running task name. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 810 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 811 ** Returns pointer to task name or NULL if error | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 812 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 813 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 814 char* rvf_get_taskname(void) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 815 { T_RVF_G_ADDR_ID id = rvf_get_taskid(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 816 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 817 if (id == 0xFF) return NULL; /* return NULL if rvf_get_taskid returns 0xFF */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 818 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 819 return pRtAddrIdTable[id]->symbolic_name; /*(OSTName[ id ]);*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 820 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 821 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 822 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 823 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 824 ** Function rvf_enable | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 825 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 826 ** Description This function enables interrupts. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 827 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 828 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 829 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 830 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 831 void rvf_enable(void) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 832 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 833 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 834 if( --OSDisableNesting == 0) /* Control nesting interrupt */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 835 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 836 if( OSInterruptAlreadyMasked == TRUE) /* check if interrupts have been disabled outside RVF, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 837 in that case, do not enable interrupts */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 838 { OSInterruptAlreadyMasked = FALSE; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 839 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 840 else | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 841 { NU_Control_Interrupts(OSLastIntLevel); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 842 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 843 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 844 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 845 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 846 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 847 #ifdef _WINDOWS | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 848 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 849 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 850 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 851 ** Function INT_Check_IRQ_Mask() | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 852 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 853 ** Description This function checks if the IRQ are disabled (outside RVF). | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 854 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 855 ** Returns IRQ mask | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 856 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 857 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 858 UINT32 INT_Check_IRQ_Mask(void) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 859 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 860 return 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 861 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 862 #else | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 863 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 864 /*-------------------------------------------------------*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 865 /* INT_Check_IRQ_Mask() */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 866 /*-------------------------------------------------------*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 867 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 868 /* Description: check in the CPSR register if the IRQ */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 869 /* are masked out or not. */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 870 /* ------------ */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 871 /* */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 872 /*-------------------------------------------------------*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 873 /* Declaration of ASM INT_Check_IRQ_Mask function */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 874 UINT32 INT_Check_IRQ_Mask(void); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 875 | 
| 120 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 876 /* | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 877 * FreeCalypso: this assembly function will be moved out into | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 878 * its own source file, or maybe added to nucleus/tct.S. | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 879 */ | 
| 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 880 #if 0 | 
| 118 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 881 asm(" .def $INT_Check_IRQ_Mask"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 882 asm("$INT_Check_IRQ_Mask "); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 883 asm(" .ref _INT_32_Check_IRQ_Mask"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 884 asm(".state16"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 885 asm(" ADR r0,_INT_32_Check_IRQ_Mask "); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 886 asm(" BX r0 "); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 887 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 888 asm(" .align"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 889 asm(" .state32"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 890 asm(" .def _INT_32_Check_IRQ_Mask"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 891 asm("_INT_32_Check_IRQ_Mask "); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 892 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 893 asm(" MRS r0,CPSR "); // pick up CPSR | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 894 asm(" BX lr "); // return to caller | 
| 120 
e7d4ec9c4c32
All of RVF compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
118diff
changeset | 895 #endif | 
| 118 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 896 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 897 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 898 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 899 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 900 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 901 ** Function rvf_disable | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 902 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 903 ** Description This function disables interrupts. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 904 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 905 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 906 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 907 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 908 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 909 #define RVF_IRQ_DISABLED_MASK 0x00000080 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 910 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 911 void rvf_disable(UINT8 who) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 912 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 913 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 914 /* Control interrupt nesting ourselves */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 915 if (OSDisableNesting == 0) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 916 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 917 if ( INT_Check_IRQ_Mask() & RVF_IRQ_DISABLED_MASK) /* if IRQ are disabled (outside RVF) */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 918 { OSInterruptAlreadyMasked = TRUE; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 919 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 920 else | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 921 { OSLastIntLevel = NU_Control_Interrupts(NU_DISABLE_INTERRUPTS); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 922 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 923 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 924 OSDisableNesting++; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 925 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 926 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 927 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 928 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 929 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 930 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 931 ** Function rvf_used_stack | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 932 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 933 ** Description This function tries to calculate the amount of | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 934 ** stack used by looking for a zero. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 935 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 936 ** Returns the number of non-zero bytes on the stack | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 937 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 938 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 939 UINT16 rvf_used_stack(T_RVF_G_ADDR_ID task) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 940 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 941 UINT16 j, stacksize; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 942 UINT8 *p; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 943 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 944 if(!pRtAddrIdTable[task]) return 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 945 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 946 stacksize = pRtAddrIdTable[task]->os_stack_size; /*OSStackSize[task];*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 947 p = pRtAddrIdTable[task]->p_os_stack; /*OSStack[task];*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 948 for(j = 0; (j < stacksize) && (*p++ == 0xFE); j++); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 949 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 950 return ((UINT16)(stacksize - j)); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 951 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 952 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 953 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 954 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 955 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 956 ** Function rvf_dump_tasks | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 957 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 958 ** Description This function dump all the rvf tasks. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 959 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 960 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 961 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 962 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 963 void rvf_dump_tasks() | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 964 { UINT8 num_task; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 965 char task_info[100]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 966 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 967 rvf_send_trace("*** START DUMPING TASKS ***", 27, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_HIGH, RVM_USE_ID); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 968 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 969 /* for each task, display its name, its id, its stack size*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 970 rvf_send_trace("*TASK_NAME Id Stack_size Used_stack", 35, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_HIGH, RVM_USE_ID); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 971 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 972 for ( num_task = 0; num_task < MAX_RVF_G_ADDR_ID; num_task++ ) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 973 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 974 /* trace the task if it has been created*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 975 if (pRtAddrIdTable[num_task] != 0 ) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 976 sprintf( task_info, "%10.10s %2d %5d %5d", | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 977 pRtAddrIdTable[num_task]->symbolic_name /*OSTName[num_task]*/, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 978 num_task, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 979 pRtAddrIdTable[num_task]->os_stack_size, | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 980 rvf_used_stack( num_task) ); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 981 rvf_send_trace( task_info, 35, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_HIGH, RVM_USE_ID); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 982 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 983 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 984 /* find a way to track task stack usage and display it */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 985 /* using NU_Check_Stack, NU_Task_Information or finding the first non-zero value in the stack */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 986 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 987 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 988 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 989 /****************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 990 /* For Big Endian Processors swap the bytes */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 991 #if defined(__BIG_ENDIAN) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 992 UINT16 ntohs(UINT16 n) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 993 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 994 register UINT8 tmp; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 995 register UINT8 *p=(UINT8 *)&n; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 996 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 997 tmp = p[0]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 998 p[0] = p[1]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 999 p[1] = tmp; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1000 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1001 return n; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1002 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1003 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1004 UINT32 ntohl(UINT32 n) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1005 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1006 register UINT8 tmp; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1007 register UINT8 *p=(UINT8 *)&n; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1008 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1009 tmp = p[0]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1010 p[0] = p[3]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1011 p[3] = tmp; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1012 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1013 tmp = p[1]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1014 p[1] = p[2]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1015 p[2] = tmp; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1016 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1017 return n; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1018 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1019 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1020 #endif /* __BIG_ENDIAN*/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1021 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1022 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1023 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1024 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1025 /****************************************************************************** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1026 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1027 ** Function rvf_send_trace | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1028 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1029 ** Description This function displays a message essentially for debug purposes. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1030 ** It displays the msg_length characters of the string pointed by msg | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1031 ** and the value of val. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1032 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1033 ** Returns void | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1034 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1035 ******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1036 #ifdef _WINDOWS | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1037 #ifndef _CONSOLE | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1038 void rvf_send_trace1( INT8 * msg, UINT8 msg_length, UINT32 val, UINT8 TRACE_LEVEL, UINT32 swe_use_id) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1039 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1040 /* Function to display trace message for Tool */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1041 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1042 UINT32 trace_type = swe_use_id; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1043 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1044 Trace( msg, msg_length, val, TRACE_LEVEL, trace_type); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1045 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1046 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1047 #endif | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1048 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1049 #ifdef _CONSOLE /* CONSOLE */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1050 void rvf_send_trace1( INT8 * msg, UINT8 msg_length, UINT32 val, UINT8 TRACE_LEVEL, UINT32 swe_use_id) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1051 const int MAX = 1000; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1052 static int l = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1053 char buf[100]; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1054 HANDLE out = 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1055 int nb; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1056 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1057 if(!out)out=GetStdHandle(STD_OUTPUT_HANDLE); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1058 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1059 rvf_disable(25); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1060 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1061 sprintf(buf,"%s %d\n", msg, val); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1062 WriteConsole(out, buf, strlen(buf), &nb, NULL); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1063 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1064 if(l>=MAX) { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1065 system("cls"); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1066 l=0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1067 } else l++; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1068 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1069 rvf_enable(); | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1070 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1071 #endif /* CONSOLE */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1072 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1073 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1074 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1075 ** Function rvf_resume_task | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1076 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1077 ** Description This function is called to resume a rvf task which is in a suspend state. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1078 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1079 ** Returns RVF_OK if successful, else an error code | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1080 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1081 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1082 T_RVF_RET rvf_resume_task( T_RVF_G_ADDR_ID taskid) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1083 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1084 if(!pRtAddrIdTable[taskid]) return RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1085 if(!pRtAddrIdTable[taskid]->pOSTCB) return RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1086 /* resume the task */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1087 if ( NU_INVALID_TASK == NU_Resume_Task( pRtAddrIdTable[taskid]->pOSTCB) ) {// A-M-E-N-D-E-D! | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1088 return RVF_INTERNAL_ERR; //RVF_INVALID_PARAMETER; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1089 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1090 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1091 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1092 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1093 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1094 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1095 ** Function rvf_initialize_mutex | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1096 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1097 ** Description This function initialize a mutex structure, which will be used | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1098 ** to protect shared variables against simultaneous access. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1099 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1100 ** Returns RVF_OK if successful, else an error code | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1101 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1102 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1103 T_RVF_RET rvf_initialize_mutex( T_RVF_MUTEX * mutex) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1104 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1105 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1106 /* initializes the mutex structure */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1107 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1108 if( NU_Create_Semaphore( (NU_SEMAPHORE *)mutex, "RVF", 1, NU_PRIORITY ) != NU_SUCCESS) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1109 { return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1110 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1111 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1112 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1113 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1114 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1115 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1116 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1117 ** Function rvf_lock_mutex | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1118 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1119 ** Description This function locks a mutex to avoid simultaneous access. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1120 ** If the mutex is already locked, the task is suspended | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1121 ** until the mutex is unlocked. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1122 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1123 ** Returns RVF_OK if successful, else an error code | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1124 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1125 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1126 T_RVF_RET rvf_lock_mutex( T_RVF_MUTEX * mutex) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1127 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1128 if( NU_Obtain_Semaphore( (NU_SEMAPHORE *)mutex, NU_SUSPEND ) != NU_SUCCESS) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1129 { return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1130 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1131 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1132 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1133 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1134 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1135 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1136 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1137 ** Function rvf_unlock_mutex | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1138 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1139 ** Description This function unlocks a mutex to avoid simultaneous access. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1140 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1141 ** Returns RVF_OK if successful, else an error code | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1142 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1143 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1144 T_RVF_RET rvf_unlock_mutex( T_RVF_MUTEX * mutex) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1145 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1146 if( NU_Release_Semaphore( (NU_SEMAPHORE *)mutex ) != NU_SUCCESS) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1147 { return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1148 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1149 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1150 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1151 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1152 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1153 /******************************************************************************* | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1154 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1155 ** Function rvf_delete_mutex | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1156 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1157 ** Description This function deletes a previously created mutex. | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1158 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1159 ** Returns RVF_OK if successful, else an error code | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1160 ** | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1161 *******************************************************************************/ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1162 T_RVF_RET rvf_delete_mutex( T_RVF_MUTEX * mutex) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1163 { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1164 if( NU_Delete_Semaphore( (NU_SEMAPHORE *)mutex ) != NU_SUCCESS) | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1165 { return RVF_INTERNAL_ERR; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1166 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1167 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1168 return RVF_OK; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1169 } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1170 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1171 void rvf_yield() { NU_Relinquish(); } | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1172 | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1173 /* convenience function */ | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1174 UINT8 rvf_isType2() { | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1175 if(pRtAddrIdTable[rvf_get_taskid()]->type_code==ET2_HOST_TASK) return 1; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1176 else return 0; | 
| 
21de8d8e6ea7
checking in Riviera code from the Sotomodem version
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1177 } | 
