⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rticore.h

📁 基于linux环境的ns2多机并行仿真补丁
💻 H
字号:
/*---------------------------------------------------------------------------*//* RTI core interface.                                                       *//* Author(s): Steve Ferenci, Thom McLean, Kalyan Perumalla.                  *//* $Revision: 1.3 $ $Name: v26apr05 $ $Date: 2003/12/12 02:41:21 $ *//*---------------------------------------------------------------------------*/#ifndef __RTICORE_H#define __RTICORE_H/*---------------------------------------------------------------------------*/#include <stdlib.h>#include <string.h>#include <stdio.h>#include "fm.h"#include "mcast.h"#include "tm.h"#include "heap.h"/*----------------------------------------------------------------------------*//* Kalyan: Eliminated older RTIKIT wrapper via these macros.                  *//*----------------------------------------------------------------------------*/int SESSION_Init( void );#define RTIKIT_VERSION        "$Date: 2003/12/12 02:41:21 $ $Name: v26apr05 $"#define RTIKIT_nodeid         FM_nodeid#define RTIKIT_numnodes       FM_numnodes#define RTIKIT_MAX_PEs        MAX_PE#define RTIKIT_UsingMCAST()   (void)0#define RTIKIT_UsingTM()      (void)0#define RTIKIT_Barrier        FML_Barrier#define RTIKIT_FinalBarrier   FML_FinalBarrier#define RTIKIT_SetGroupLAByHandle Core_SetGroupLAByHandle             /*KALYAN*/#define RTIKIT_SetGroupLAByName Core_SetGroupLAByName                 /*KALYAN*/#define RTIKIT_FinalizeTopology Core_FinalizeTopology                 /*KALYAN*/#define RTIKIT_Tick()         do{ FM_extract(~0); TM_Tick(); }while(0)#define RTIKIT_Init(ac,av)    do{                                              \                printf("%ld: Initializing RTI (version %s)...\n",              \	               FM_nodeid, RTIKIT_VERSION); fflush(stdout);             \                SESSION_Init(); FML_FMInit(); MCAST_Init(); TM_Init(0);        \                FML_Barrier();                                                 \	        printf("%ld: RTI initialized.\n",FM_nodeid); fflush(stdout);   \	    }while(0)/*---------------------------------------------------------------------------*/typedef enum {             /*       * General messages       */            fdkSUCCEEDED = 0, /* "Succeeded."                */      fdkINCOMPLETE,    /* "Succeeded, but incomplete."*/      fdkFAILED,        /* "Failed."                   */      fdkOUTOFMEMORY,   /* "Out of Memory."            */      fdkBADFD,         /* "Bad File Descriptor."      */     /*      * RTICore specific error messages       */            fdkNLBTSERROR,    /* "Attempt to defer more than one LBTS computation."*/      fdkCNSLBTS,       /* "Could not start LBTS computation."         */      fdkLMLTLBTS,      /* "Local Min less than LBTS."                 */      fdkTMPENDING,     /* "Time Management Request pending."          */      fdkTIMEPASSED,    /* "Requested time already passed."            */      fdkTMESMALL,      /* "TM_EPSILON too small."                     */      fdkTMINCON,       /* "State of time managment is inconsistent."  */              /* registration errors (certain functions must be registered) */         fdkDOMNR,         /* "DeliverOneMessage is not registered."  */      fdkDTSOENR,       /* "DeliverTSOEvents is not registered."   */      fdkDROENR,        /* "DeliverROEvents is not registered."    */      fdkTAGNR,         /* "TimeAdvanceGrant is not registered."   */      fdkTSOMNR,        /* "TSOMin is not registered."             */      fdkTSOPNR,        /* "TSOPop is not registered."             */     /*      * RTI errors for DeliverOneMessage, DeliverROEvents,       * and DeliverTSOEvents      */      fdkDOMIMT,        /* "Invalid message type."  */           /*      * GuardValue      */      fdkMAXERROR       /* "Invalid fdkErrorCode."  */} fdkErrorCode;/*---------------------------------------------------------------------------*//*  * Returns an error message for the given fdkErrorCode.   *  The error messages can be stored in an array and indexed  *  by fdkErrorCode.  */const char *fdkErrorMessage(fdkErrorCode ec);/*---------------------------------------------------------------------------*/#define ISDELIVERABLE    0#define NOTDELIVERABLE   1#define RETRACTABLE      0#define NOTRETRACTABLE   1#define NOTRETRACTABLENE 2#define RHMFATALERROR    -1/*---------------------------------------------------------------------------*/typedef unsigned long CoreRetractionNumber;/*---------------------------------------------------------------------------*/typedef struct{   CoreRetractionNumber rn;   unsigned long        fedID;}CoreRetractionHandle;/*---------------------------------------------------------------------------*/typedef struct{   CoreRetractionHandle rh;   TM_Time              ts;   MCAST_Handle         mh;}CoreRetractInfo;/*---------------------------------------------------------------------------*//*   Macros to make RetractionID network safe.*/#define hton_RetractionID(/*RetractionID **/_r) ((*(_r)) = htonl(*(_r)))#define ntoh_RetractionID(/*RetractionID **/_r) ((*(_r)) = ntohl(*(_r)))/*---------------------------------------------------------------------------*//*    Prototypes of functions the RTI must register with RTI Core*/typedef fdkErrorCode (*DeliverOneMessageProc)(TM_Time, char *, long, long);typedef fdkErrorCode (*DeliverROEventsProc)(void);typedef fdkErrorCode (*DeliverTSOEventsProc)(TM_Time);typedef void (*TimeAdvanceGrantProc)(TM_Time);typedef TM_Time (*TSOMinProc)(void);typedef char * (*TSOPopProc)(TM_Time *, long *, long *);/*---------------------------------------------------------------------------*//*    ID Functions*/int Core_nodeID(void);int Core_federateID(void);/*---------------------------------------------------------------------------*//*    Time Managment Functions */fdkErrorCode Core_InitRTI(void);fdkErrorCode Core_InitDebug(FILE *fout);  fdkErrorCode Core_RegisterDeliverOneMessage(DeliverOneMessageProc p);fdkErrorCode Core_RegisterDeliverROEvents(DeliverROEventsProc p);fdkErrorCode Core_RegisterDeliverTSOEvents(DeliverTSOEventsProc p);fdkErrorCode Core_RegisterTimeAdvanceGrant(TimeAdvanceGrantProc p);fdkErrorCode Core_RegisterTSOMin(TSOMinProc p);fdkErrorCode Core_RegisterTSOPop(TSOPopProc p);TM_Time Core_GetCurrentTime(void);TM_TimeQual  Core_GetCurrentQual(void);TM_Time Core_GetLookAhead(void);TM_Time Core_GetLBTS(void);fdkErrorCode Core_SetLookAhead(TM_Time newLA);int     Core_ValidateTimestamp(TM_Time timestamp);void    Core_ConsiderIncomingTSOMsg(TM_Time msg_ts,TM_TagType tm_tag);/*KALYAN*/void    Core_ConsiderOutgoingTSOMsg(TM_Time msg_ts, int count);       /*KALYAN*/fdkErrorCode Core_TSOifyGroup(MCAST_Handle handle);                   /*KALYAN*/fdkErrorCode Core_FinalizeTopology(void);                             /*KALYAN*/fdkErrorCode Core_DisableLBTS (void);fdkErrorCode Core_EnableLBTS (void);fdkErrorCode Core_EnsureRequestTimeNotPast (TM_Time RequestTime); fdkErrorCode Core_EnsureRequestNotPending ();fdkErrorCode Core_NextEventRequest(TM_Time RequestTime);fdkErrorCode Core_NextEventRequestAvailable(TM_Time RequestTime);fdkErrorCode Core_TimeAdvanceRequest(TM_Time RequestTime);fdkErrorCode Core_TimeAdvanceRequestAvailable(TM_Time RequestTime);fdkErrorCode Core_FlushQueueRequest(TM_Time RequestTime);fdkErrorCode Core_tick(void);fdkErrorCode Core_PrintRTIState(FILE *out);/*----------------------------------------------------------------------------*//*    General Retraction Handle Management Functions*/fdkErrorCode Core_InitRHMDebug(FILE *fout);/*----------------------------------------------------------------------------*//*    Sender Retraction Handle Management Functions*/fdkErrorCode RHM_PutTag(TM_Time ts,                         MCAST_Handle mh,                         CoreRetractionHandle *rid);int RHM_IsRetractable(CoreRetractionHandle   rID,                       CoreRetractInfo    *ri);fdkErrorCode RHM_PrintSenderRetractionTable(FILE *out);/*----------------------------------------------------------------------------*//*   Receiver Retraction Handle Management Functions*/fdkErrorCode RHM_In(CoreRetractionHandle rID,                     TM_Time              ts,                     MCAST_Addr           Msg,                     int                  MsgSize,                     long                 MsgType);int RHM_IsDeliverable(CoreRetractionHandle rID,                               MCAST_Addr          *Msg,                               int                 *MsgSize);fdkErrorCode RHM_PrintReceiverRetractionTable(FILE *out);/*---------------------------------------------------------------------------*/#endif /* __RTICORE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -