/******************************************************************************* ################################################################################ # Copyright (c) [2017-2019] [Radisys] # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # # You may obtain a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ *******************************************************************************/ /********************************************************************20** Name: system services interface Type: C include file Desc: Structures, variables and typedefs required by the System Services service user. File: ssi.x *********************************************************************21*/ #ifndef __SSIX__ #define __SSIX__ #ifdef __cplusplus extern "C" { #endif /* typedefs */ typedef S16 Status; /* status */ typedef U32 Ticks; /* system clock ticks */ #ifdef LONG_MSG typedef S32 MsgLen; /* message length */ #else typedef S16 MsgLen; /* message length */ #endif typedef S16 Order; /* message or queue order */ #ifdef DOS typedef U16 Size; /* size (for number of bytes per region or per s-pool) */ #else typedef U32 Size; /* size (for number of bytes per region or per s-pool) */ typedef S32 PtrOff; /* signed pointer offset */ #endif typedef U32 QLen; /* queue length */ typedef QLen BufQLen; /* buffer queue length */ typedef S16 RegSize; /* region size (for number of regions per processor) */ typedef S16 DPoolSize; /* dynamic pool size (for number of buffers per d-pool) */ typedef U16 Random; /* random number */ typedef S16 Seq; /* sequence */ /* ssi_x_001.main_64 Additions */ typedef U32 CoreId; /* core id */ /* Error */ typedef U32 ErrCls; /* Error Class */ typedef U32 ErrCode; /* Error Code */ typedef U32 ErrVal; /* Error Value */ typedef S16 VectNmb; /* vector number */ typedef S16 Ttype; /* task type */ typedef S8 Sema; /* semaphore */ /* post */ /* This section contains specific typedefs, structures and prototypes for the following operating systems: MOS - MOSVER MOS, v2 - MSVER2 psos - PS vrtxsa - VX vxworks - VW sslib - system service library for elvis other - The defines PORTVER, MOSVER and MSVER2 are mutually exclusive. The define PORTVER must be set in conjunction with the define PS, VX, VW or other. */ #ifdef MOSVER /* mos version */ /* mos typedefs, structures and prototypes */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct ss_queue Queue; /* forward definition - queue */ /* chain */ typedef struct chn /* chain */ { Buffer *fwd; /* forward */ Buffer *bck; /* backward */ } Chn; typedef Chn Chain; /* chain */ /* queue - typdef'd earlier */ struct ss_queue /* queue - typdef'd earlier */ { Chn chn; /* chain */ QLen crntSize; /* current size */ QLen maxSize; /* maximum size */ }; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typdef'd earlier */ { Chn chn; /* chain */ Mem mem; /* memory */ S8 bufType; /* buffer type */ union { struct { MsgLen strtIdx; /* start index */ MsgLen endIdx; /* end index */ MsgLen size; /* size */ Data data[DSIZE]; /* data */ } dat; /* data buffer */ struct { Queue bq; /* buffer queue */ MsgLen msgLen; /* message length */ S16 refCnt; /* reference count */ Pst pst; /* post (optional) */ U32 wsU32[2]; /* workspace unsigned 32 bit values (optional) */ U16 wsU16[1]; /* workspace unsigned 16 bit values (optional) */ U8 wsU8[2]; /* workspace unsigned 8 bit values (optional) */ } msg; /* message buffer */ struct { Buffer *entry[MAXEXTENT];/* entry */ } ext; /* extension buffer */ struct { Size size; /* size */ } stc; /* static buffer */ struct { MsgLen strtIdx; /* start index */ MsgLen endIdx; /* end index */ MsgLen size; /* size */ Data *data; /* data pointer */ } dma; /* dma buffer */ } t; }; EXTERN S16 msOptInd; EXTERN S8 *msOptArg; EXTERN Txt **msArgv; EXTERN S16 msArgc; #else #ifdef MSVER2 /* mos version 2 */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct sBuf SBuf; /* forward definition - static buffer */ typedef struct ss_queue Queue; /* forward definition - queue */ /* buffer identifier */ /* dynamic chain (4b ALIGNED) */ typedef struct dChn /* dynamic chain */ { Buffer *prev; /* previous */ Buffer *crnt; /* current */ Buffer *next; /* next */ } DChn; /* static chain (4b ALIGNED)*/ typedef struct sChn /* static chain */ { SBuf *fwd; /* forward */ } SChn; /* buffer queue (4b ALIGNED) */ typedef struct bufQ /* buffer queue */ { DChn dChn; /* dynamic chain */ BufQLen crntSize; /* current size */ } BufQ; /* queue (4b ALIGNED) */ struct ss_queue /* queue - typdef'd earlier */ { DChn dChn; /* dynamic chain */ QLen crntSize; /* current size */ }; /* 4Byte aligned */ typedef struct ss_dat /* data buffer */ { MsgLen strtIdx; /* start index (2b) */ MsgLen endIdx; /* end index (2b) */ MsgLen size; /* size (2b) */ Pool pool; /* size (1b); Not used for MOS as of now */ U8 spare; /* spare for alignment (1b) */ Data data[DSIZE]; /* data (4b) */ } Dat; /* 4Byte aligned */ typedef struct ss_msg /* message buffer */ { Queue bufQ; /* buffer queue */ Buffer *nxtDBuf; /* next DBuf */ MsgLen msgLen; /* message length */ Pool pool; /* size (1b); Not used for MOS as of now */ U8 spare; /* spare for alingment */ } Msg; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { DChn dChn; /* dynamic chain */ S8 bufType; /* buffer type */ U8 spare1; /* spare for alignment */ U16 spare2; /* spare for alignment */ union { Dat dat; /* data buffer */ Msg msg; /* message buffer */ } t; }; /* static buffer - typedef'd earlier */ struct sBuf /* static buffer - typedef'd earlier */ { SChn sChn; /* static chain */ Size size; /* size */ S8 bufType; /* buffer type */ U8 spare1; /* spare 1 */ U16 spare2; /* spare 2 */ }; EXTERN S16 msOptInd; EXTERN S8 *msOptArg; EXTERN Txt **msArgv; EXTERN S16 msArgc; #else #ifdef PS /* psos version */ /* psos typedefs, structures and prototypes */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct ss_queue Queue; /* forward definition - queue */ /* chain */ typedef struct chn /* chain */ { Buffer *fwd; /* forward */ Buffer *bck; /* backward */ } Chn; /* queue - typdef'd earlier */ struct ss_queue /* queue - typdef'd earlier */ { Chn chn; /* chain */ QLen crntSize; /* current size */ QLen maxSize; /* maximum size */ }; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { Chn chn; /* chain */ Mem mem; /* memory */ S8 bufType; /* buffer type */ union { struct { MsgLen strtIdx; /* start index */ MsgLen endIdx; /* end index */ MsgLen size; /* size */ Data data[DSIZE]; /* data */ } dat; /* data buffer */ struct { Queue bq; /* buffer queue */ MsgLen msgLen; /* message length */ S16 refCnt; /* reference count */ } msg; /* message buffer */ struct { Buffer *entry[MAXEXTENT];/* entry */ } ext; /* extension buffer */ struct { Size size; /* size */ } stc; /* static buffer */ struct { MsgLen strtIdx; /* start index */ MsgLen endIdx; /* end index */ MsgLen size; /* size */ Data *data; /* data pointer */ } dma; /* dma buffer */ } t; }; #else #ifdef VX /* vrtxsa version */ /* vrtxsa typedefs, structures and prototypes */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct ss_queue Queue; /* forward definition - queue */ /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { Buffer *fwd; /* forward chain pointer for queues */ Buffer *bck; /* backward chain pointer for queues */ U16 mPid; /* VRTXsa memory partition ID */ S16 start; /* starting index of message in byte array */ S16 end; /* ending index of message in byte array */ U16 status; /* buffer status */ }; /* chain */ typedef struct chn /* chain */ { Buffer *fwd; /* forward */ Buffer *bck; /* backward */ } Chn; /* queue - typdef'd earlier */ struct ss_queue /* queue - typdef'd earlier */ { Chn chn; /* chain */ QLen crntSize; /* current size */ QLen maxSize; /* maximum size */ }; #else #ifdef VW /* vxworks version */ /* vxworks typedefs, structures and prototypes */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct ss_queue Queue; /* forward definition - queue */ typedef struct dChn /* dynamic chain */ { Buffer *prev; /* previous */ Buffer *crnt; /* current */ Buffer *next; /* next */ } DChn; /* static chain (4b ALIGNED)*/ /* buffer queue (4b ALIGNED) */ typedef struct bufQ /* buffer queue */ { DChn dChn; /* dynamic chain */ BufQLen crntSize; /* current size */ } BufQ; /* queue (4b ALIGNED) */ struct ss_queue /* queue - typdef'd earlier */ { DChn dChn; /* dynamic chain */ QLen crntSize; /* current size */ }; typedef struct ss_dat /* data buffer */ { MsgLen strtIdx; /* start index */ MsgLen endIdx; /* end index */ MsgLen size; /* size */ Pool pool; /* pool id */ U8 spare; /* spare */ Data *data; /* data */ } Dat; typedef struct ss_msg /* message buffer */ { Queue bufQ; /* buffer queue */ Buffer *nxtDBuf; /* next DBuf */ MsgLen msgLen; /* message length */ Pool pool; /* pool id */ U8 spare; /* spare */ } Msg; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { DChn dChn; /* dynamic chain */ S8 bufType; /* buffer type */ U8 spare1; /* spare for alignment */ U16 spare2; /* spare for alignment */ union { Dat dat; /* data buffer */ Msg msg; /* message buffer */ } t; }; #else #ifdef SSLIB /* system service library */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct sBuf SBuf; /* forward definition - static buffer */ typedef struct ss_queue Queue; /* forward definition - queue */ /* queue - typdef'd earlier */ struct ss_queue /* queue - typdef'd earlier */ { S16 dummy; /* dummy placeholder */ }; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { S32 sIdx; /* start index */ S32 len; /* buffer length */ S8 dat[MAXBUFSIZ]; /* data */ }; #else /* portable/other version */ #ifdef SSRYLIB /* system service library */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct sBuf SBuf; /* forward definition - static buffer */ typedef struct ss_queue Queue; /* forward definition - queue */ typedef S16 RyBufId; /* dynamic chain (aligned) */ typedef struct ryDChn /* dynamic chain */ { RyBufId back; /* backward (2b) */ RyBufId crnt; /* current (2b) */ RyBufId next; /* next (2b) */ RyBufId pad; /* pad (2b) */ } RyDChn; /* * queue - typdef'd earlier * This is exactly same as RyBufQ */ struct ss_queue /* queue - typdef'd earlier */ { RyDChn dChn; QLen crntSize; /* current size */ U16 ryChanId; /* relay channel Id */ }; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { S32 sIdx; /* start index */ S32 len; /* buffer length */ S8 dat[MAXBUFSIZ]; /* data */ }; #else /* portable/other version */ #ifdef WINNT_IATM /* Windows NT Integrated ATM */ #ifndef CMFILE_REORG_1 #ifndef CFG_APP /* Don't include ndis.h for config app. */ #include "ndis.h" /* to support NDIS calls (listed above) */ #endif /* CFG_APP */ typedef struct _NDIS_PACKET Buffer; /* forward definition - buffer */ #endif /* CMFILE_REORG_1 */ typedef struct ss_queue Queue; /* forward definition - queue */ /* Trillium Queue is built upon the NDIS library list functions. * No spin locks are applied for queues. */ struct ss_queue { LIST_ENTRY ListHead; /* LIST_ENTRY to support NDIS list calls */ QLen CurQLen; /* current queue length */ QLen MaxQLen; /* maximum queue length */ }; #else /* WINNT_IATM */ #ifdef MT /* multi-threaded version */ /* multi-threaded typedefs, structures and prototypes */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct ss_queue Queue; /* forward definition - queue */ typedef struct sBuf SBuf; /* forward definition - static buffer */ typedef struct dChn /* dynamic chain */ { Buffer *prev; /* previous */ Buffer *crnt; /* current */ Buffer *next; /* next */ } DChn; /* static chain (4b ALIGNED)*/ typedef struct sChn { SBuf *fwd; /* forward */ } SChn; /* static chain (4b ALIGNED)*/ /* buffer queue (4b ALIGNED) */ /* queue (4b ALIGNED) */ struct ss_queue /* queue - typdef'd earlier */ { DChn dChn; /* dynamic chain */ QLen crntSize; /* current size */ }; typedef struct ss_dat /* data buffer */ { MsgLen strtIdx; /* start index */ MsgLen endIdx; /* end index */ MsgLen size; /* size */ Pool pool; /* pool id */ U8 spare; /* spare */ Data *data; /* data */ } Dat; typedef struct ss_msg /* message buffer */ { Queue bufQ; /* buffer queue */ Buffer *nxtDBuf; /* next DBuf */ MsgLen msgLen; /* message length */ Pool pool; /* pool id */ U8 spare; /* spare */ } Msg; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { DChn dChn; /* dynamic chain */ S8 bufType; /* buffer type */ U8 spare1; /* spare for alignment */ U16 spare2; /* spare for alignment */ union { Dat dat; /* data buffer */ Msg msg; /* message buffer */ } t; }; /* static buffer - typedef'd earlier */ struct sBuf { SChn sChn; /* static chain */ Size size; /* size */ S8 bufType; /* buffer type */ U8 spare1; /* spare 1 */ U16 spare2; /* spare 2 */ }; typedef S32 MtRwLockId; typedef S32 MtSemaId; typedef S32 MtCondId; typedef S32 MtMtxId; typedef S32 MtThrdId; typedef S32 MtThrdFlags; typedef S32 MtThrdPrior; typedef Void *(MtThrd) ARGS((Void *)); #else /* not MT */ #ifdef PORTVER /* portable typedefs, structures and prototypes */ /* forward definitions */ #ifndef CMFILE_REORG_1 typedef struct ss_buffer Buffer; /* forward definition - buffer */ #endif typedef struct ss_queue Queue; /* forward definition - queue */ /* queue - typdef'd earlier */ struct ss_queue /* queue - typdef'd earlier */ { S16 dummy; /* dummy placeholder */ }; /* buffer - typedef'd earlier */ struct ss_buffer /* buffer - typedef'd earlier */ { S16 dummy; /* dummy placeholder */ }; /* task related stuff */ /* data range modified */ #ifndef SS_MULTIPLE_PROCS typedef U8 SSTskId; /* System Task Id */ #else /* SS_MULTIPLE_PROCS */ typedef U16 SSTskId; /* System Task Id */ #endif /* SS_MULTIPLE_PROCS */ typedef S32 SSTskPrior; /* System Task Priority */ #ifdef SS_AEHDPR_SUPPORT typedef Void (*PISR) ARGS((PTR cxt)); /* pointer to ISR function handler */ typedef Void (*PDPR) ARGS((PTR cxt)); /* pointer to DPR function handler */ #endif /* SS_AEHDPR_SUPPORT */ #else /* not PORTVER */ #ifdef SS /* Common System Services */ /* for SGetOpt() */ EXTERN S16 msOptInd; EXTERN S8 *msOptArg; EXTERN Txt **msArgv; EXTERN S16 msArgc; /* task related stuff */ /* data range modified */ #ifndef SS_MULTIPLE_PROCS typedef U8 SSTskId; /* System Task Id */ #else /* SS_MULTIPLE_PROCS */ typedef U16 SSTskId; /* System Task Id */ #endif /* SS_MULTIPLE_PROCS */ typedef S32 SSTskPrior; /* System Task Priority */ #ifndef CMFILE_REORG_1 /* Buffer type is necessary */ typedef struct ssmsgb Buffer; #endif /* CMFILE_REORG_1 */ /* message block */ struct ssmsgb { S8 refCnt; /* Counter to Free Buff */ struct ssmsgb *b_next; /* next message */ struct ssmsgb *b_prev; /* previous message */ struct ssmsgb *b_cont; /* next message block */ U8 *b_rptr; /* 1st unread data byte of buffer */ U8 *b_wptr; /* 1st unwritten data byte of buffer */ struct ssdatab *b_datap; /* pointer to data block */ }; /* Queue data structure */ typedef struct ssQueue { Buffer *head; /* head of queue */ Buffer *tail; /* tail of queue */ QLen crntSize; /* current szie of queue */ } Queue; /* Memory CTL operations structure */ typedef struct sMemCtl { U8 op; /* operation */ union { struct { Data *vaddr; /* virtual address */ Data **paddr; /* physical address */ } vtop; struct { Size size; /* size */ Status *status; /* status */ } chkres; } u; } SMemCtl; /* memory management handler function types */ /* ssi_x_001.main_47 - addition for introducing additional parameter memType(static/dynamic) */ /* ssi_x_001.main_57 : Additions */ #ifdef SS_HISTOGRAM_SUPPORT #ifdef SSI_DEBUG_LEVEL1 typedef S16 (*SsAlloc) ARGS((Void *, Size *, U32, Data **, U32, U32, U8*, U8, Bool)); #else typedef S16 (*SsAlloc) ARGS((Void *, Size *, U32, Data **, U32, U8*, U8, Bool)); #endif /* SSI_DEBUG_LEVEL1 */ typedef S16 (*SsFree) ARGS((Void *, Data *, Size, U32, U8*, U8, Bool)); typedef S16 (*SsCtl) ARGS((Void *, Event, SMemCtl *)); #elif defined(SS_LIGHT_MEM_LEAK_STS) typedef S16 (*SsAlloc) ARGS((Void *, Size *, U32 , Data **, U32, U32 , U8 *)); typedef S16 (*SsFree) ARGS((Void *, Data *, Size, U32, U8 *)); typedef S16 (*SsCtl) ARGS((Void *, Event, SMemCtl *)); #else #ifdef SSI_DEBUG_LEVEL1 typedef S16 (*SsAlloc) ARGS((Void *, Size *, U32, Data **, U32)); #else #ifdef T2K_MEM_LEAK_DBG typedef S16 (*SsAlloc) ARGS((Void *, Size *, U32, Data **,char*, U32)); #else typedef S16 (*SsAlloc) ARGS((Void *, Size *, U32, Data **)); #endif #endif /* SSI_DEBUG_LEVEL1 */ #ifdef T2K_MEM_LEAK_DBG typedef S16 (*SsFree) ARGS((Void *, Data *, Size,char*, U32)); #else typedef S16 (*SsFree) ARGS((Void *, Data *, Size)); #endif typedef S16 (*SsCtl) ARGS((Void *, Event, SMemCtl *)); #endif /* SS_HISTOGRAM_SUPPORT */ /* region information structure -- passed to SRegRegion() */ typedef struct sRegInfo { Void *regCb; /* region control block pointer */ U32 flags; /* region characteristics flags */ /* ssi_x_001.main_64 Additions */ #ifdef SS_CAVIUM cvmx_arena_list_t regArena; /* arena for the region */ #endif Data *start; /* start address of region */ Size size; /* size of region */ SsAlloc alloc; /* allocation function pointer */ SsFree free; /* deallocation function pointer */ SsCtl ctl; /* control request function pointer */ } SRegInfo; #ifdef SS_OLD_THREAD /* types for SGetThread(), SGetMutex, etc. */ typedef Void *(SThrd) ARGS((Void *)); typedef S32 SThrdId; /* thread Id */ typedef S32 SMtxId; /* mutex Id */ typedef S32 SCondId; /* condition Id */ #endif /* SS_OLD_THREAD */ /*ssi_x_001.main_63 ss_dep.x guarded under flag*/ #ifdef SS_CAVIUM #include "jz_dep.x" #else #ifdef SS_4GMX_LCORE #include "ss_dep.x" #else #include "ss_dep.x" #endif /* SS_4GMX_LCORE */ #endif/*SS_CAVIUM*/ #endif /* SS */ #endif /* PORTVER */ #endif /* MT */ #endif /* WINNT_IATM */ #endif /* SSRYLIB */ #endif /* SSLIB */ #endif /* VW */ #endif /* VX */ #endif /* PS */ #endif /* MSVER2 */ #endif /* MOSVER */ /* ssi_x_001.main_57 : Additions */ #ifdef SS_HISTOGRAM_SUPPORT /* typedef struct entInfo { U8 entid; }EntInfo; typedef struct secondIndex { EntInfo info[26]; }SecondIndex; typedef struct firstIndex { SecondIndex info[26]; }FirstIndex; */ #endif /* SS_HISTOGRAM_SUPPORT */ /* functions */ /* procId and control block added */ #ifndef SS_MULTIPLE_PROCS typedef S16 (*PAIFS16) ARGS((Ent ent,Inst inst,Region region,Reason reason )); /* ssi_x_001.main_54 */ /* ssi_x_001.main_53 */ /* ssi_x_001.main_69: Removed the SS_MT_TMR guard from PAIFTMRS16 timer activation function typedef. */ typedef S16 (*PAIFTMRS16) ARGS((Ent ent, Inst inst)); #else typedef S16 (*PAIFS16) ARGS((ProcId proc, Ent ent, Inst inst, Region region, Reason reason, Void **xxCb)); /* time activation function typedef */ typedef S16 (*PAIFTMRS16) ARGS((ProcId proc, Ent ent, Inst inst)); #endif /* SS_MULTIPLE_PROCS */ #ifndef VX typedef S16 (*PATFS16) ARGS((Prior prior,Route route,Ent ent,Inst inst,Buffer *mBuf)); #else typedef void (*PATFS16) ARGS((void *vPtr)); #endif typedef S16 (*ActvTsk) ARGS((Pst *pst, Buffer *mBuf)); #ifdef ENB_RELAY typedef struct uProc UProc; /* forward definition - uproc */ #ifdef RYINT1 typedef void (*ISTsk) ARGS((Inst inst)); #else /* for backward compatibility */ typedef void (*ISTsk) ARGS((UProc *uProc)); #endif /* RYINT1 */ struct uProc { Inst inst; /* instance */ ProcId low; /* procId low value */ ProcId high; /* procId high value */ ActvTsk actvTsk; /* activation function for drvr task */ U16 isFlag; /* interrupt service flag */ ISTsk isTsk; /* interrupt service task */ }; #endif /* ENB_RELAY */ /* functions */ EXTERN S16 SChekMemUtilization ARGS((Region region,Bool *memAlarm)); EXTERN Void prntMem ARGS((Data *strtAdr,S16 len)); EXTERN Void prntMsg ARGS((Buffer *mBuf)); EXTERN Void prntMsg1 ARGS((Buffer *mBuf,S16 src,S16 dst)); EXTERN uint8_t tst ARGS((void )); EXTERN S16 rdConQ ARGS((Data data)); EXTERN S16 SPkS8 ARGS((S8 val,Buffer *mBuf)); EXTERN S16 oduUnpackUInt8 ARGS((U8 val,Buffer *mBuf)); EXTERN S16 SPkS16 ARGS((S16 val,Buffer *mBuf)); EXTERN S16 oduUnpackUInt16 ARGS((U16 val,Buffer *mBuf)); EXTERN S16 SPkS32 ARGS((S32 val,Buffer *mBuf)); EXTERN S16 oduUnpackUInt32 ARGS((U32 val,Buffer *mBuf)); /* ssi_x_001.main_49 : added packing of F32 and F64*/ #ifdef SS_FLOAT EXTERN S16 SPkF32 ARGS((F32 val,Buffer *mBuf)); EXTERN S16 SPkF64 ARGS((F64 val,Buffer *mBuf)); #endif /* SS_FLOAT */ EXTERN S16 SUnpkS8 ARGS((S8 *val,Buffer *mBuf)); EXTERN S16 oduPackUInt8 ARGS((U8 *val,Buffer *mBuf)); EXTERN S16 SUnpkS16 ARGS((S16 *val,Buffer *mBuf)); EXTERN S16 oduPackUInt16 ARGS((U16 *val,Buffer *mBuf)); EXTERN S16 SUnpkS32 ARGS((S32 *val,Buffer *mBuf)); EXTERN S16 oduPackUInt32 ARGS((U32 *val,Buffer *mBuf)); /* ssi_x_001.main_49 : added unpacking of F32 and F64*/ #ifdef SS_FLOAT EXTERN S16 SUnpkF32 ARGS((F32 *val,Buffer *mBuf)); EXTERN S16 SUnpkF64 ARGS((F64 *val,Buffer *mBuf)); #endif /* SS_FLOAT */ EXTERN S16 SPrint ARGS((Txt *buf)); EXTERN S16 SDisplay ARGS((S16 chan,Txt *buf)); EXTERN S16 SPrntMsg ARGS((Buffer *mBuf,S16 src,S16 dst)); EXTERN S16 SInitQueue ARGS((Queue *q)); #ifndef SS_ENABLE_MACROS EXTERN S16 SQueueFirst ARGS((Buffer *buf,Queue *q)); EXTERN S16 SQueueLast ARGS((Buffer *buf,Queue *q)); EXTERN S16 SDequeueFirst ARGS((Buffer * *bufPtr,Queue *q)); EXTERN S16 SDequeueLast ARGS((Buffer * *bufPtr,Queue *q)); #endif /* SS_ENABLE_MACROS */ EXTERN S16 SFlushQueue ARGS((Queue *q)); EXTERN S16 SCatQueue ARGS((Queue *q1,Queue *q2,Order order)); EXTERN S16 SFndLenQueue ARGS((Queue *q,QLen *lngPtr)); EXTERN S16 SExamQueue ARGS((Buffer **bufPtr,Queue *q,QLen idx)); EXTERN S16 SAddQueue ARGS((Buffer *buf,Queue *q,QLen idx)); EXTERN S16 SRemQueue ARGS((Buffer **bufPtr,Queue *q,QLen idx)); #ifndef SS_ENABLE_MACROS #ifdef T2K_MEM_LEAK_DBG #define SGetDBuf(region,pool,buf) SGetDBufNew(region,pool,buf,__FILE__,__LINE__) #define SPutDBuf(region,pool,buf) SPutDBufNew(region,pool,buf,file,line) EXTERN S16 SGetDBufNew ARGS((Region region,Pool pool,Buffer * *bufPtr,char*,U32)); EXTERN S16 SPutDBufNew ARGS((Region region,Pool pool,Buffer *buf,char*,U32)); EXTERN S16 SAttachPtrToBufNew ARGS((Region region, Pool pool, Data *ptr, MsgLen totalLen, Buffer** mBuf, char* file, U32 line)); #define SAttachPtrToBuf(region,pool,ptr,totalLen,mBuf) SAttachPtrToBufNew(region,pool,ptr,totalLen,mBuf,__FILE__,__LINE__) #define SPutZbcDBuf(region,buf) SPutZbcDBufNew(region,buf,__FILE__,__LINE__) #elif SS_LIGHT_MEM_LEAK_STS EXTERN S16 SGetDBufNew ARGS((Region region,Pool pool,Buffer * *bufPtr,U32 line,U8 *fnName)); EXTERN S16 SPutDBufNew ARGS((Region region,Pool pool,Buffer *buf, U32 line, U8 *fnName)); #else EXTERN S16 SGetDBuf ARGS((Region region,Pool pool,Buffer * *bufPtr)); EXTERN S16 SPutDBuf ARGS((Region region,Pool pool,Buffer *buf)); #endif #else /* SS_ENABLE_MACROS */ #ifdef T2K_MEM_LEAK_DBG #define SGetDBuf(region,pool,buf) SGetDBufNew(region,pool,buf,__FILE__,__LINE__) #define SPutDBuf(region,pool,buf) SPutDBufNew(region,pool,buf,__FILE__,__LINE__) EXTERN S16 SGetDBufNew ARGS((Region region,Pool pool,Buffer * *bufPtr,char*,U32)); EXTERN S16 SPutDBufNew ARGS((Region region,Pool pool,Buffer *buf,char*,U32)); #elif SS_LIGHT_MEM_LEAK_STS EXTERN S16 SGetDBufNew ARGS((Region region,Pool pool,Buffer * *bufPtr,U32 line,U8 *fnName)); EXTERN S16 SPutDBufNew ARGS((Region region,Pool pool,Buffer *buf, U32 line, U8 *fnName)); #else EXTERN S16 SGetDBuf ARGS((Region region,Pool pool,Buffer * *bufPtr)); EXTERN S16 SPutDBuf ARGS((Region region,Pool pool,Buffer *buf)); #endif #endif /* SS_ENABLE_MACROS */ EXTERN S16 SPutMsgToRegion ARGS((Region region, Buffer *buf)); #ifdef SS_USE_ICC_MEMORY EXTERN Void *ssGetIccHdl ARGS((Region region)); #endif /* SS_USE_ICC_MEMORY */ /* ssi_x_001.main_57 : Additions */ /* ssi_x_001.main_59 : Added compile time flag */ #ifdef SS_LIGHT_MEM_LEAK_STS EXTERN S16 SGetMsgNew ARGS((Region region, Pool pool, Buffer * *mBufPtr, U32 line, U8 *fnName)); EXTERN S16 SGetSBufNew ARGS((Region region,Pool pool, Data * *bufPtr, Size size, U32 line, U8* fnName)); EXTERN S16 SPutMsgNew ARGS((Buffer *mBuf, U32 line, U8 *fnName)); EXTERN S16 SPutSBufNew ARGS((Region region, Pool pool, Data *buf, Size size, U32 line, U8 *fnName)); #else /*SS_LIGHT_MEM_LEAK_STS */ #ifdef SS_HISTOGRAM_SUPPORT EXTERN S16 SPutMsgNew ARGS((Buffer *mBuf, U32 line, U8 *fileName)); EXTERN S16 SGetMsgNew ARGS((Region region, Pool pool, Buffer * *mBufPtr, U32 line, U8 *fileName)); EXTERN S16 SGetSBufNew ARGS((Region region,Pool pool, Data * *bufPtr, Size size, U32 line, U8 *fileName)); EXTERN S16 SPutSBufNew ARGS((Region region, Pool pool, Data *buf, Size size, U32 line, U8 *fileName)); #else /*ssi_x_001.main_67 : RMIOS specific changes*/ #ifndef SS_RMIOS #ifdef T2K_MEM_LEAK_DBG #define SPutMsg(mBuf) SPutMsgNew(mBuf,__FILE__,__LINE__) #define SGetMsg(region,pool,mBuf) SGetMsgNew(region,pool,mBuf,__FILE__,__LINE__) EXTERN S16 SPutMsgNew ARGS((Buffer *mBuf,char*, U32)); EXTERN S16 SGetMsgNew ARGS((Region region, Pool pool, Buffer * *mBufPtr, char*,U32)); #else EXTERN S16 SPutMsg ARGS((Buffer *mBuf)); EXTERN S16 SGetMsg ARGS((Region region, Pool pool, Buffer * *mBufPtr)); #endif #else #define SPutMsg(m) SPutMsgRmi(__FILE__, __LINE__, m) #define SGetMsg(r, p, m) SGetMsgRmi(__FILE__, __LINE__, r, p, m) EXTERN S16 SPutMsgRmi ARGS((char *file, int line, Buffer *mBuf)); EXTERN S16 SGetMsgRmi ARGS((char *file, int line, Region region, Pool pool, Buffer * *mBufPtr)); #endif #if (defined(SSI_STATIC_MEM_LEAK_DETECTION)|| defined(T2K_MEM_LEAK_DBG)) #define SGetSBuf(region,pool,bufPtr,size) SGetSBuf1(region,pool,bufPtr,size,__FILE__,__LINE__) EXTERN S16 SGetSBuf1 ARGS((Region region,Pool pool, Data * *bufPtr, Size size, char* file, U32 line)); EXTERN void DumpStaticMemLeakFiles ARGS((void)); EXTERN void DumpT2kMemLeakInfoToFile ARGS((void)); #define SPutSBuf(region,pool,buf,size) SPutSBuf1(region,pool,buf,size,__FILE__,__LINE__) EXTERN S16 SPutSBuf1 ARGS((Region region, Pool pool, Data *buf, Size size, char*, U32)); #else EXTERN S16 SGetSBuf ARGS((Region region,Pool pool, Data * *bufPtr, Size size)); EXTERN S16 SPutSBuf ARGS((Region region, Pool pool, Data *buf, Size size)); #endif #endif /* SS_HISTOGRAM_SUPPORT */ #endif /*SS_LIGHT_MEM_LEAK_STS */ #ifdef INTEL_WLS #ifdef T2K_MEM_LEAK_DBG #define SGetSBufWls(region,pool,bufPtr,size) SGetSBufWls1(region,pool,bufPtr,size,__FILE__,__LINE__) #define SPutSBufWls(region,pool,bufPtr,size) SPutSBufWls1(region,pool,bufPtr,size,__FILE__,__LINE__) EXTERN S16 SPutSBufWls1(Region region, Pool pool, Data *ptr, Size size,char* file, U32 line); EXTERN S16 SGetSBufWls1(Region region, Pool pool, Data **ptr, Size size,char* file, U32 line); #define SAttachWlsPtrToMBuf(region,pool,bufPtr,rPtr,size,pLen,mBuf) SAttachWlsPtrToMBuf1(region,pool,bufPtr,rPtr,size,pLen,mBuf,__FILE__,__LINE__) EXTERN S16 SAttachWlsPtrToMBuf1(Region region, Pool pool, Data *ptr, Data *readPtr, MsgLen totalLen, MsgLen ptrLen, Buffer** mBuf,char* file, U32 line); #define SAttachPtrToMBuf(region,pool,bufPtr,size,pLen,mBuf) SAttachPtrToMBuf1(region,pool,bufPtr,size,pLen,mBuf,__FILE__,__LINE__) #else EXTERN S16 SPutSBufWls(Region region, Pool pool, Data *ptr, Size size); EXTERN S16 SGetSBufWls(Region region, Pool pool, Data **ptr, Size size); EXTERN S16 SAttachWlsPtrToMBuf(Region region, Pool pool, Data *ptr, Data *readPtr, MsgLen totalLen, MsgLen ptrLen, Buffer** mBuf); #endif #endif EXTERN S16 SGetStaticBuffer ARGS((Region region,Pool pool, Data * *bufPtr, Size size, U8 memType)); EXTERN S16 SPutStaticBuffer ARGS((Region region, Pool pool, Data *buf, Size size, U8 memType)); /* ssi_x_001.main_65: Additions */ #ifdef SS_SEUM_CAVIUM EXTERN S16 ssInitRcvWork ARGS((void)); EXTERN S16 SConvPtrPhy ARGS(( Buffer **mBuf)); EXTERN S16 SConvPhyPtr ARGS((Buffer **workPtr)); EXTERN S16 SCpyFpaMsg ARGS((Buffer *srcBuf, Region dstRegion,Pool dstPool, Buffer **dstBuf)); EXTERN S16 SCpyMsgFpa ARGS(( Buffer *srcBuf, Buffer **dstBuf)); EXTERN S16 SPutFpaMsg ARGS(( Buffer *fpaBuf)); #endif /* SS_SEUM_CAVIUM */ EXTERN S16 SGetSMem ARGS((Region region,Size size,Pool *poolPtr)); EXTERN S16 SPutSMem ARGS((Region region,Pool pool)); EXTERN S16 SInitMsg ARGS((Buffer *mBuf)); EXTERN S16 SAddPreMsg ARGS((Data data,Buffer *mBuf)); EXTERN S16 SAddPstMsg ARGS((Data data,Buffer *mBuf)); /* ssi_x_001.main_70 - Added prototype for SAddPreMsgMultInOrder */ EXTERN S16 SAddPreMsgMultInOrder ARGS((Data *src,MsgLen cnt,Buffer *mBuf)); EXTERN S16 SRemPreMsg ARGS((Data *dataPtr,Buffer *mBuf)); EXTERN S16 SRemPreMsgRegion ARGS((Region region, Data *dataPtr,Buffer *mBuf)); EXTERN S16 SCatMsgRegion ARGS((Region region, Buffer *mBuf1,Buffer *mBuf2,Order order)); EXTERN S16 SSegMsgRegion ARGS((Region region, Buffer *mBuf1,MsgLen idx,Buffer **mBuf2)); EXTERN int SCreatePThread ARGS((pthread_t* tid, pthread_attr_t* attr, void *(*start_routine) (void *), void* arg)); EXTERN S16 SRemPstMsg ARGS((Data *dataPtr,Buffer *mBuf)); #ifdef T2K_MEM_LEAK_DBG #define SAddPreMsgMult(src, cnt, mBuf) SAddPreMsgMult1(src, cnt, mBuf, __FILE__,__LINE__) #define SAddPstMsgMult(src, cnt, mBuf) SAddPstMsgMult1(src, cnt, mBuf, __FILE__,__LINE__) EXTERN S16 SAddPreMsgMult1 ARGS((Data *src,MsgLen cnt,Buffer *mBuf, char *file, U32 line)); EXTERN S16 SAddPstMsgMult1 ARGS((Data *src,MsgLen cnt,Buffer *mBuf, char *file, U32 line)); #else EXTERN S16 SAddPreMsgMult ARGS((Data *src,MsgLen cnt,Buffer *mBuf)); EXTERN S16 SAddPstMsgMult ARGS((Data *src,MsgLen cnt,Buffer *mBuf)); #endif EXTERN S16 SGetPstMsgMult ARGS((MsgLen cnt,Buffer *mBuf)); EXTERN S16 SRemPreMsgMult ARGS((Data *dst,MsgLen cnt,Buffer *mBuf)); EXTERN S16 SRemPstMsgMult ARGS((Data *dst,MsgLen cnt,Buffer *mBuf)); EXTERN S16 SRepMsg ARGS((Data data,Buffer *mBuf,MsgLen idx)); EXTERN S16 SExamMsg ARGS((Data *dataPtr,Buffer *mBuf,MsgLen idx)); /*ssi_x_001.main_60 */ EXTERN S16 SGetDataFrmMsg ARGS ((Buffer *mBuf, Data *dataPtr, MsgLen idx, MsgLen dataLen)); EXTERN S16 SFndLenMsg ARGS((Buffer *mBuf,MsgLen *lngPtr)); EXTERN S16 SCatMsg ARGS((Buffer *mBuf1,Buffer *mBuf2,Order order)); #ifdef T2K_MEM_LEAK_DBG #define SSegMsg(mBuf1, idx, mBuf2) SSegMsgNew(mBuf1, idx, mBuf2, __FILE__, __LINE__) EXTERN S16 SSegMsgNew ARGS((Buffer *mBuf1,MsgLen idx,Buffer **mBuf2,char*,U32)); #else EXTERN S16 SSegMsg ARGS((Buffer *mBuf1,MsgLen idx,Buffer **mBuf2)); #endif EXTERN S16 SSwapMsg ARGS((Buffer *mBuf1, Buffer *mBuf2)); EXTERN S16 SCpyMsgFix ARGS((Buffer *srcMbuf,MsgLen srcIdx,MsgLen cnt, Data *dstBuf,MsgLen *cCnt)); EXTERN S16 SCpyFixMsg ARGS((Data *srcBuf,Buffer *dstMbuf, MsgLen dstIdx,MsgLen cnt,MsgLen *cCnt)); EXTERN S16 SCompressMsg ARGS((Buffer *mBuf)); #ifdef T2K_MEM_LEAK_DBG #define SAddMsgRef(mBuf,region,pool,dstBuf) SAddMsgRefNew(mBuf,region,pool,dstBuf,__FILE__,__LINE__) #define SCpyMsgMsg(mBuf,region,pool, dstBuf) SCpyMsgMsgNew(mBuf,region,pool, dstBuf, __FILE__, __LINE__) EXTERN S16 SAddMsgRefNew ARGS((Buffer *mBuf, Region region, Pool pool, Buffer **dstBuf,char*,U32)); EXTERN S16 SCpyMsgMsgNew ARGS((Buffer *mBuf, Region region, Pool pool, Buffer **dstBuf,char* , U32)); #else EXTERN S16 SCpyMsgMsg ARGS((Buffer *mBuf, Region region, Pool pool, Buffer **dstBuf)); EXTERN S16 SAddMsgRef ARGS((Buffer *mBuf, Region region, Pool pool, Buffer **dstBuf)); EXTERN S16 SIncMsgRef(Buffer *srcBuf, Region dstRegion, Pool dstPool, Buffer **dstBuf); #ifdef SS_RBUF /* EXTERN S16 SIncMsgRef ARGS((Buffer *srcBuf, Buffer **dstBuf)); */ EXTERN Void SIncMsgLen ARGS((Buffer *mBuf)); #endif #endif EXTERN S16 SChkRes ARGS((Region region,Pool pool,Status *status)); EXTERN S16 SChkResUtl ARGS((Region region,U8 *wSum)); EXTERN S16 SSetDateTime ARGS((DateTime *dt)); EXTERN S16 SGetDateTime ARGS((DateTime *dt)); #ifdef L2_OPTMZ EXTERN Void SResetMBuf ARGS ((Buffer *mBuf)); #endif /* ssi_x_001.main_57 : Additions */ /* ssi_x_001.main_58 : Additions */ /* ssi_x_001.main_60 : Modifications */ EXTERN S16 SGetEpcTime ARGS((EpcTime *et)); /* ssi_x_001.main_48: Added Timestamp changes */ EXTERN S16 SGetTimeStamp ARGS(( S8 *ts)); EXTERN S16 SGetSysTime ARGS((Ticks *sysTime)); EXTERN S16 SGetRefTime ARGS((U32 refTime, U32 *sec, U32 *usec)); EXTERN S16 SRandom ARGS((Random *value)); EXTERN S16 SError ARGS((Seq seq,Reason reason)); EXTERN Void SLogError ARGS((Ent ent, Inst inst, ProcId procId, Txt *file, S32 line, ErrCls errCls, ErrCode errCode, ErrVal errVal, Txt *errDesc)); /* ssi_x_001.main_49 : added prototype for SGetSystemTsk() */ EXTERN U32 SGetSystemTsk ARGS ((Void)); /* changes to support multiple processors in single SSI */ /* multiple proc id changes: these functions are not supported with multiple proc Ids */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 SRegInit ARGS((Ent ent,Inst inst,PAIFS16 initFnct)); EXTERN S16 SRegActvTsk ARGS((Ent ent,Inst inst,Ttype ttype,Prior prior, ActvTsk actvTsk)); #endif /* SS_MULTIPLE_PROCS */ /* multiple proc id changes: procId added and time function type modified */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 SRegCfgTmr ARGS((Ent ent, Inst inst, S16 period, S16 units, PFS16 tmrFnct)); #ifdef SS_MT_TMR /* ssi_x_001.main_53 */ EXTERN S16 SRegCfgTmrMt ARGS((Ent ent, Inst inst, S16 period, S16 units, PAIFTMRS16 tmrFnctMt)); #endif EXTERN S16 SDeregCfgTmr ARGS((Ent ent, Inst inst, S16 period, S16 units, PFS16 tmrFnct)); #ifdef SS_MT_TMR /* ssi_x_001.main_53 */ EXTERN S16 SDeregCfgTmrMt ARGS((Ent ent, Inst inst, S16 period, S16 units, PAIFTMRS16 tmrFnctMt)); #endif #else EXTERN S16 SRegCfgTmr ARGS((ProcId proc, Ent ent, Inst inst, S16 period, S16 units, PAIFTMRS16 tmrFnct)); EXTERN S16 SDeregCfgTmr ARGS((ProcId proc, Ent ent, Inst inst, S16 period, S16 units, PAIFTMRS16 tmrFnct)); #endif /* SS_MULTIPLE_PROCS */ EXTERN S16 SPstTsk ARGS((Pst *pst, Buffer *mBuf)); #ifdef SS_ROUTE_MSG_CORE1 EXTERN S16 SPstTskIcpu ARGS((Pst *pst, Buffer *mBuf)); #endif #ifdef ENB_RELAY EXTERN S16 SRegDrvrTsk ARGS((Inst inst, ProcId low, ProcId high, ActvTsk actvTsk, ISTsk isTsk)); /*ssi_x_001.main_56*/ EXTERN S16 SDeregDrvrTsk ARGS((Inst channel)); #endif /* ENB_RELAY */ #ifdef SS_RTR_SUPPORT EXTERN S16 SRegRtrTsk ARGS((Route *, Cntr, ActvTsk)); EXTERN S16 SDeregRtrTsk ARGS((Route *, Cntr)); #endif /* SS_RTR_SUPPORT */ #ifdef SS_USE_ZBC_MEMORY EXTERN S16 SAttachPtrToBuf ARGS(( Region region, Pool pool, Data *ptr, MsgLen totalLen, Buffer** mBuf )); #endif /* multi-core support ssi_x_001.main_55 */ /*ssi_x_001.main_68 Added SS_AFFINITY_SUPPORT*/ #if defined(SS_MULTICORE_SUPPORT) || defined(SS_AFFINITY_SUPPORT) typedef S8 SsAffinityMode; typedef struct { U32 numCores; /* total number of cores available */ U32 threadsPerCore; /* total number of threads available per core */ U32 threadRegister[SS_MAX_CORES]; /* available threads per core */ } SCpuInfo; EXTERN S16 SRegCpuInfo ARGS((SCpuInfo *cpuInfo)); EXTERN S16 SSetAffinity ARGS((SSTskId *tskId, SsAffinityMode mode, U32 coreId, SSTskId *tskAssociatedTskId)); EXTERN S16 SGetAffinity ARGS((SSTskId *tskId, U32 *coreId)); #endif /* SS_MULTICORE_SUPPORT || SS_AFFINITY_SUPPORT*/ #ifdef SS_AEHDPR_SUPPORT EXTERN S16 SSetAehDpr ARGS((ProcId procId, VectNmb vectNmb,PISR pisr,PTR ptr1,PDPR pdpr,PTR ptr2)); EXTERN S16 SRemoveAehDpr ARGS((ProcId chipNum, VectNmb vectNmb)); #endif EXTERN S16 SAddDBufPst ARGS((Buffer *mBuf, Buffer *dBuf)); EXTERN S16 SAddDBufPre ARGS((Buffer *mBuf, Buffer *dBuf)); EXTERN S16 SRemDBufPst ARGS((Buffer *mBuf, Buffer **dBuf)); EXTERN S16 SRemDBufPre ARGS((Buffer *mBuf, Buffer **dBuf)); EXTERN S16 SGetDataRx ARGS((Buffer *dBuf, MsgLen pad, Data **dat, MsgLen *mLen)); EXTERN S16 SGetDataTx ARGS((Buffer *dBuf, Data **dat, MsgLen *mLen)); EXTERN S16 SUpdMsg ARGS((Buffer *mBuf, Buffer *dBuf, MsgLen mLen)); EXTERN S16 SCacheFlush ARGS( (U16 cache_type, Data *addr, Size size)); EXTERN S16 SCacheInvalidate ARGS( (U16 cache_type, Data *addr, Size size)); EXTERN S16 SAlignDBufEven ARGS((Buffer *dBuf)); EXTERN S16 SAlignDBuf ARGS((Buffer *dBuf, U32 align)); EXTERN S16 SInitNxtDBuf ARGS((Buffer *mBuf)); EXTERN S16 SGetNxtDBuf ARGS((Buffer *mBuf, Buffer **dBuf)); EXTERN S16 SChkNxtDBuf ARGS((Buffer *mBuf)); EXTERN S16 SSetIntPend ARGS((U16 id, Bool flag)); EXTERN S16 SChkMsg ARGS((Buffer *mBuf)); EXTERN S16 SDeregInitTskTmr ARGS((Ent ent,Inst inst)); EXTERN S16 SExitTsk ARGS((void )); EXTERN S16 SExitInt ARGS((void )); EXTERN S16 SHoldInt ARGS((void )); EXTERN S16 SRelInt ARGS((void )); EXTERN S16 SEnbInt ARGS((void )); EXTERN S16 SDisInt ARGS((void )); EXTERN S16 SGetVect ARGS((VectNmb vectNmb,PIF *vectFnct)); EXTERN S16 SPutVect ARGS((VectNmb vectNmb,PIF vectFnct)); #ifdef WINNT_KERN EXTERN S16 SPutIsrDpr ARGS((VectNmb vectNmb, Void *context, PIF isrFnct, PIF dprFnct)); EXTERN S16 SSyncInt ARGS((U16 adapterNmb, PFVOID syncFnct, Void *syncContext)); #endif EXTERN S16 SInitSema ARGS((Region region, Sema *sema)); EXTERN S16 SRelSema ARGS((Region region, Sema sema)); EXTERN S16 SGetSema ARGS((Region region, Sema sema)); EXTERN S16 SActvInit ARGS((Ent ent,Inst inst,Region region,Reason reason)); EXTERN S16 SActvTsk ARGS((Prior prior,Route route,Ent srcEnt, Inst srcInst,Buffer *mBuf)); EXTERN S16 SActvTmr ARGS((void )); EXTERN S16 SGetOpt ARGS((int argc,char **argv,char *opts)); /* multiple proc id changes: These functions not supported with multiple procIds */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 SGetEntInst ARGS((Ent *ent, Inst *inst)); EXTERN S16 SSetEntInst ARGS((Ent ent, Inst inst)); EXTERN ProcId SFndProcId ARGS((void)); EXTERN Void SSetProcId ARGS((ProcId pId)); #endif /* SS_MULTIPLE_PROCS */ EXTERN S16 SGetDBufSiz ARGS((Region region, Pool pool, S16 *size)); EXTERN S16 SGetStrtIdx ARGS((Region region, Pool pool, S16 *idx)); EXTERN S16 SGetEndIdx ARGS((Region region, Pool pool, S16 *idx)); EXTERN S16 SGetStrtPad ARGS((Region region, Pool pool, S16 *pad)); /* multiple proc id changes: control block retrieval function */ #ifdef SS_MULTIPLE_PROCS EXTERN S16 SGetXxCb ARGS((ProcId proc, Ent ent, Inst inst, Void **xxCb)); #endif /* SS_MULTIPLE_PROCS */ #ifdef MT /* * These routines are only available for multi-threaded * system service implementations */ EXTERN S16 SGetMutex ARGS((MtMtxId *mId)); EXTERN S16 SPutMutex ARGS((MtMtxId mId)); EXTERN S16 SLockMutex ARGS((MtMtxId mId)); EXTERN S16 SUnlockMutex ARGS((MtMtxId mId)); EXTERN S16 SGetCond ARGS((MtCondId *cId)); EXTERN S16 SPutCond ARGS((MtCondId cId)); EXTERN S16 SCondWait ARGS((MtMtxId mId,MtCondId cId)); EXTERN S16 SCondSignal ARGS((MtCondId cId)); EXTERN S16 SCondBroadcast ARGS((MtCondId cId)); EXTERN S16 SGetThread ARGS((MtThrd thrd, MtThrdFlags thr_flgs, Ptr arg, MtThrdId *thrdId)); EXTERN S16 SPutThread ARGS((MtThrdId thrdId)); EXTERN Void SThreadYield ARGS((void)); EXTERN Void SThreadExit ARGS((Ptr *status)); EXTERN Void SSetThrdPrior ARGS((MtThrdId tId, MtThrdPrior tPr)); EXTERN Void SGetThrdPrior ARGS((MtThrdId tId, MtThrdPrior *tPr)); #endif /* MT */ EXTERN Void SExit ARGS((Void)); #ifdef SS /* multiple proc id changes: procId added */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 SRegTTsk ARGS((Ent ent, Inst inst, Ttype type, Prior prior, PAIFS16 initTsk, ActvTsk actvTsk)); /* ssi_x_001.main_60 */ EXTERN S16 SRegCbTsk ARGS((Ent ent, Inst inst, ActvTsk actvTsk)); EXTERN S16 SDeregTTsk ARGS((Ent ent, Inst inst)); #else EXTERN S16 SRegTTsk ARGS((ProcId proc, Ent ent, Inst inst, Ttype type, Prior prior, PAIFS16 initTsk, ActvTsk actvTsk)); EXTERN S16 SDeregTTsk ARGS((ProcId proc, Ent ent, Inst inst)); EXTERN S16 SRegCbTsk ARGS((ProcId proc, Ent ent, Inst inst, ActvTsk actvTsk)); #endif /* SS_MULTIPLE_PROCS */ EXTERN S16 SCreateSTsk ARGS((SSTskPrior tskPrior, SSTskId *tskId)); EXTERN S16 SDestroySTsk ARGS((SSTskId tskId)); /* multiple proc id changes: procId added */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 SAttachTTsk ARGS((Ent ent, Inst inst, SSTskId tskId)); EXTERN S16 SDetachTTsk ARGS((Ent ent, Inst inst)); #else EXTERN S16 SAttachTTsk ARGS((ProcId proc, Ent ent, Inst inst, SSTskId tskId)); EXTERN S16 SDetachTTsk ARGS((ProcId proc, Ent ent, Inst inst)); #endif /* SS_MULTIPLE_PROCS */ EXTERN S16 SRegRegion ARGS((Region region, SRegInfo *regInfo)); EXTERN S16 SDeregRegion ARGS((Region region)); EXTERN S16 SRegDynRegion ARGS((Region region, SRegInfo *regInfo)); /*ssi_x_001.main_62-prototype for SAlloc and SFree, gaurded under flag*/ #ifndef SS_FAP /* ssi_x_001.main_57 : Additions */ #ifdef SS_HISTOGRAM_SUPPORT EXTERN S16 SAlloc ARGS((Region region, Size *size, U32 flags, Data **ptr,U32 line, U8 *fileName, U8 entId)); EXTERN S16 SFree ARGS((Region region, Data *ptr, Size size, U32 line, U8 *fileName, U8 entId)); #else #ifdef T2K_MEM_LEAK_DBG #define SAlloc(region,size,flags,ptr) SAllocNew(region,size,flags,ptr,file,line) #define SFree(region,ptr,size) SFreeNew(region,ptr,size,file,line) EXTERN S16 SAllocNew ARGS((Region region, Size *size, U32 flags, Data **ptr,char*,U32)); EXTERN S16 SFreeNew ARGS((Region region, Data *ptr, Size size,char*,U32)); #elif defined(SS_LIGHT_MEM_LEAK_STS) EXTERN S16 SAlloc ARGS((Region region, Size *size, U32 flags, Data **ptr,U32 line, U8 *fnName)); EXTERN S16 SFree ARGS((Region region, Data *ptr, Size size, U32 line, U8 *fnName)); #else EXTERN S16 SAlloc ARGS((Region region, Size *size, U32 flags, Data **ptr)); EXTERN S16 SFree ARGS((Region region, Data *ptr, Size size)); #endif #endif EXTERN S16 SGetBufRegionPool ARGS((Buffer *mBuf, Region *region, Pool *pool)); #endif /* SS_ENABLE_MACROS */ #ifdef SS_OLD_THREAD EXTERN S16 SGetMutex ARGS((SMtxId *mId)); EXTERN S16 SPutMutex ARGS((SMtxId mId)); EXTERN S16 SLockMutex ARGS((SMtxId mId)); EXTERN S16 SUnlockMutex ARGS((SMtxId mId)); EXTERN S16 SGetCond ARGS((SCondId *cId)); EXTERN S16 SPutCond ARGS((SCondId cId)); EXTERN S16 SCondWait ARGS((SMtxId mId,SCondId cId)); EXTERN S16 SCondSignal ARGS((SCondId cId)); EXTERN S16 SCondBroadcast ARGS((SCondId cId)); EXTERN S16 SGetThread ARGS((SThrd thrd, S32 thr_flgs, Ptr arg, SThrdId *thrdId)); EXTERN S16 SPutThread ARGS((SThrdId thrdId)); EXTERN Void SThreadYield ARGS((void)); EXTERN Void SThreadExit ARGS((Ptr status)); EXTERN Void SSetThrdPrior ARGS((SThrdId tId, S32 tPr)); EXTERN Void SGetThrdPrior ARGS((SThrdId tId, S32 *tPr)); EXTERN Void SExit ARGS((void)); #else /* SS_OLD_THREAD */ EXTERN S16 SThreadYield ARGS((void)); #endif /* SS_OLD_THREAD */ EXTERN S16 SInitLock ARGS((SLockId *lock,U8 type)); EXTERN S16 SLock ARGS((SLockId *lock)); EXTERN S16 SUnlock ARGS((SLockId *lock)); EXTERN S16 SDestroyLock ARGS((SLockId *lock)); EXTERN S16 SInitSemaphore ARGS((SsSemaId *sem, U8 value)); EXTERN S16 SWaitSemaphore ARGS((SsSemaId *sem)); EXTERN S16 SPostSemaphore ARGS((SsSemaId *sem)); EXTERN S16 SDestroySemaphore ARGS((SsSemaId *sem)); /* multiple proc id changes: new function required to implement multiple procIds */ #ifdef SS_MULTIPLE_PROCS EXTERN S16 SAddProcIdLst ARGS((U16 numPIds, ProcId *pIdLst)); EXTERN S16 SRemProcIdLst ARGS((U16 numPIds, ProcId *pIdLst)); EXTERN S16 SGetProcIdLst ARGS((U16 *numPIds, ProcId *pIdLst)); #endif /* SS_MULTIPLE_PROCS */ #endif /* SS */ #ifdef SS_SEGV_SIG_HDLR #ifndef SS_MULTIPLE_PROCS EXTERN S16 SRegIntrptHdlr ARGS((Ent ent, Inst inst, PFS16 intrptActvFn)); #else EXTERN S16 SRegIntrptHdlr ARGS((ProcId proc, Ent ent, Inst inst, PFS16 intrptActvFn)); #endif/*SS_MULTIPLE_PROCS*/ #endif /* SS_SEGV_SIG_HDLR */ #ifdef PORTVER /* procId added */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 SRegTTsk ARGS((Ent ent, Inst inst, Ttype type, Prior prior, PAIFS16 initTsk, ActvTsk actvTsk)); /* ssi_x_001.main_60 */ EXTERN S16 SRegCbTsk ARGS((Ent ent, Inst inst, ActvTsk actvTsk)); EXTERN S16 SDeregTTsk ARGS((Ent ent, Inst inst)); EXTERN S16 SAttachTTsk ARGS((Ent ent, Inst inst, SSTskId tskId)); EXTERN S16 SDetachTTsk ARGS((Ent ent, Inst inst)); #else EXTERN S16 SRegTTsk ARGS((ProcId proc, Ent ent, Inst inst, Ttype type, Prior prior, PAIFS16 initTsk, ActvTsk actvTsk)); EXTERN S16 SRegCbTsk ARGS((ProcId proc, Ent ent, Inst inst, ActvTsk actvTsk)); EXTERN S16 SDeregTTsk ARGS((ProcId proc, Ent ent, Inst inst)); EXTERN S16 SAttachTTsk ARGS((ProcId proc, Ent ent, Inst inst, SSTskId tskId)); EXTERN S16 SDetachTTsk ARGS((ProcId proc, Ent ent, Inst inst)); #endif /* SS_MULTIPLE_PROCS */ EXTERN S16 SCreateSTsk ARGS((SSTskPrior tskPrior, SSTskId *tskId)); EXTERN S16 SDestroySTsk ARGS((SSTskId tskId)); #ifndef SS_ENABLE_MACROS EXTERN S16 SGetBufRegionPool ARGS((Buffer *mBuf, Region *region, Pool *pool)); #endif /* SS_ENABLE_MACROS */ EXTERN S16 SInitLock ARGS((SLockId *lock,U8 type)); EXTERN S16 SLock ARGS((SLockId *lock)); EXTERN S16 SUnlock ARGS((SLockId *lock)); EXTERN S16 SDestroyLock ARGS((SLockId *lock)); EXTERN S16 SInitSemaphore ARGS((SsSemaId *sem, U8 value)); EXTERN S16 SWaitSemaphore ARGS((SsSemaId *sem)); EXTERN S16 SPostSemaphore ARGS((SsSemaId *sem)); EXTERN S16 SDestroySemaphore ARGS((SsSemaId *sem)); /* functions required to implement multiple procIds */ #ifdef SS_MULTIPLE_PROCS EXTERN S16 SAddProcIdLst ARGS((U16 numPIds, ProcId *pIdLst)); EXTERN S16 SRemProcIdLst ARGS((U16 numPIds, ProcId *pIdLst)); EXTERN S16 SGetProcIdLst ARGS((U16 *numPIds, ProcId *pIdLst)); #endif /* SS_MULTIPLE_PROCS */ #endif /* PORTVER */ /* function prototypes */ /* stack manager initialization function */ /* multiple proc id changes: procId added */ #ifndef SS_MULTIPLE_PROCS EXTERN S16 smActvInit ARGS((Ent ent, Inst inst, Region region, Reason reason)); #else /* SS_MULTIPLE_PROCS */ EXTERN S16 smActvInit ARGS((ProcId proc, Ent ent, Inst inst, Region region, Reason reason, Void **xxCb)); #endif /* SS_MULTIPLE_PROCS */ /* stack manager external initialization function */ EXTERN S16 smInitExt ARGS((void)); /* stack manager activation function */ EXTERN S16 smActvTsk ARGS((Pst *pst, Buffer *mBuf)); /* ssi_x_001.main_54 */ #ifdef SS_SID_CHANGE /* ssi_x_001.main_53 */ EXTERN S16 SGetInDepSId ARGS((SystemId *s)); EXTERN S16 SGetDepSId ARGS((SystemId *s)); #endif /* Macros... */ #define SS_INITDCHN(chn) (chn)->next = NULLP; (chn)->prev = NULLP #define SS_INITQUE(qu) \ SS_INITDCHN(&(qu)->dChn); (qu)->crntSize = 0 #define SS_QLEN(bq) ((bq)->crntSize) #define SS_MLEN(mb) ((mb)->t.msg.msgLen) /* ssi_x_001.main_50 : Added declarations for mutex related functions * to protect demand queue and memory allocation */ /* ssi_x_001.main_51 : Added control flag as these are only used by windows */ #ifdef SS_WIN EXTERN S16 WTInitLock ARGS((SLockId *lock,U8 type)); EXTERN S16 WTLock ARGS((SLockId *lock)); EXTERN S16 WTUnlock ARGS((SLockId *lock)); EXTERN S16 WTDestroyLock ARGS((SLockId *lock)); #endif /* End of SS_WIN */ /* ssi_x_001.main_57 : Additions */ #ifdef SS_LOGGER_SUPPORT EXTERN S16 SRegLogCfg ARGS(( U8 mode, S8 *path, U32 size, S8 *IPA, U16 port)); EXTERN S16 SWrtLogBuf ARGS(( Txt *buf )); /* ssi_x_001.main_60 */ EXTERN S16 SDeregLogCfg ARGS((Void )); #endif /* SS_LOGGER_SUPPORT */ #ifdef SS_HISTOGRAM_SUPPORT EXTERN S16 SRegForHstGrm ARGS((Ent ent)); EXTERN S16 SHstGrmInfoShow ARGS((Ent *entId)); EXTERN S16 SFillEntIds ARGS((Void)); EXTERN S16 SGetEntInd ARGS((Ent *entId, U8 *fileName)); #endif /* SS_HISTOGRAM_SUPPORT */ /* ssi_x_001.main_68 Multiple declaration removed , one already in cm_task.x */ /* ssi_x_001.main_61: Lock support guraded under the flag */ #ifdef SS_LOCK_SUPPORT EXTERN S16 SLockNew ARGS((SLockInfo *LockId, U8 lockType)); EXTERN S16 SInitLockNew ARGS((SLockInfo *LockId, U8 lockType)); EXTERN S16 SUnlockNew ARGS((SLockInfo *LockId, U8 lockType)); EXTERN S16 SDestroyLockNew ARGS((SLockInfo *LockId, U8 lockType)); #endif /* SS_LOCK_SUPPORT */ EXTERN S8* SGetConfigPath ARGS((Void)); /* ssi_x_001.main_66 : Added new Buffer manegement APIs */ EXTERN S16 SCpyPartMsg ARGS((Buffer *srcBuf, MsgLen idx, MsgLen cnt, Buffer *dstBuf)); EXTERN S16 SRepPartMsg ARGS((Buffer *srcBuf, MsgLen idx, MsgLen cnt, Buffer *dstBuf)); EXTERN S16 SMovPartMsg ARGS((Buffer *srcBuf, MsgLen idx, Buffer *dstBuf)); EXTERN S16 SPkMsgMult ARGS((Data *src, MsgLen cnt, Buffer *mBuf)); EXTERN S16 SGetReadPtr ARGS((Buffer *mBuf, U8** data, MsgLen *len)); typedef enum { SS_SHARABLE_MEMORY, SS_NON_SHARABLE_MEMORY }ssMemoryType; #ifdef TENB_T2K3K_SPECIFIC_CHANGES EXTERN S16 SReInitTmr ARGS((Void )); #endif /* ssi_x_001.main_69: Added MSPD debug macro */ #ifdef MSPD extern U32 ysGT; extern char ys_global_printbuf[256]; EXTERN Void rbCallstackShow ARGS((Void)); EXTERN Void rbCallstackShowForCore ARGS((U32 coreId)); EXTERN U32 MacGetTick ARGS ((void)); #endif /* MSPD */ #ifdef LTE_L2_MEAS extern U64 glblTtiCnt; #endif EXTERN S16 SStartTask ARGS((VOLATILE U32 *startTime, U32 tarkId)); EXTERN S16 SStopTask ARGS((VOLATILE U32 startTime,U32 taskId)); #ifdef MSPD_MLOG_NEW /* Removed for C++ Compilation EXTERN unsigned int MLogTask (unsigned int taskid, unsigned int resourceid , unsigned int ticksstart,unsigned int ticksstop); --*/ #endif #if defined(MSPD) && defined(MSPD_DBG_ENABLE) #define MSPD_DBG_RLC(...) #ifdef TENB_T2K3K_SPECIFIC_CHANGES #ifndef ALIGN_64BIT #define MSPD_DBG(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len1 = snprintf(_local_printbuf, SS_MEMLOG_MAXSTRLEN, "%s():%u @%lu ", __func__, __LINE__, ysGT); \ int _len2 = snprintf(&_local_printbuf[_len1],SS_MEMLOG_MAXSTRLEN - _len1, __VA_ARGS__) + _len1; \ ssMemlog(_local_printbuf, _len2); \ } while (0) #else #define MSPD_DBG(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len1 = snprintf(_local_printbuf, SS_MEMLOG_MAXSTRLEN, "%s():%u @%u ", __func__, __LINE__, ysGT); \ int _len2 = snprintf(&_local_printbuf[_len1],SS_MEMLOG_MAXSTRLEN - _len1, __VA_ARGS__) + _len1; \ ssMemlog(_local_printbuf, _len2); \ } while (0) #endif #define MSPD_DBG_RAW(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len = snprintf(_local_printbuf,SS_MEMLOG_MAXSTRLEN, __VA_ARGS__); \ ssMemlog(_local_printbuf, _len); \ } while (0) #ifndef ALIGN_64BIT #define MSPD_LOG(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len1 = snprintf(_local_printbuf, SS_MEMLOG_MAXSTRLEN,"%s():%u @%lu ", __func__, __LINE__, ysGT); \ int _len2 = snprintf(&_local_printbuf[_len1],SS_MEMLOG_MAXSTRLEN - _len1, __VA_ARGS__) + _len1; \ ssMemlog(_local_printbuf, _len2); \ } while (0) #else #define MSPD_LOG(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len1 = snprintf(_local_printbuf, SS_MEMLOG_MAXSTRLEN,"%s():%u @%u ", __func__, __LINE__, ysGT); \ int _len2 = snprintf(&_local_printbuf[_len1],SS_MEMLOG_MAXSTRLEN - _len1, __VA_ARGS__) + _len1; \ ssMemlog(_local_printbuf, _len2); \ } while (0) #endif #ifndef ALIGN_64BIT #define MSPD_ERR(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len1 = snprintf(_local_printbuf, SS_MEMLOG_MAXSTRLEN, "ERROR: %s():%u @%lu ", __func__, __LINE__, ysGT); \ int _len2 = snprintf(&_local_printbuf[_len1],SS_MEMLOG_MAXSTRLEN - _len1, __VA_ARGS__) + _len1; \ ssMemlog(_local_printbuf, _len2); \ } while (0) #else #define MSPD_ERR(...) do { \ char _local_printbuf[SS_MEMLOG_MAXSTRLEN]; \ int _len1 = snprintf(_local_printbuf, SS_MEMLOG_MAXSTRLEN, "ERROR: %s():%u @%u ", __func__, __LINE__, ysGT); \ int _len2 = snprintf(&_local_printbuf[_len1],SS_MEMLOG_MAXSTRLEN - _len1, __VA_ARGS__) + _len1; \ ssMemlog(_local_printbuf, _len2); \ } while (0) #endif EXTERN Void ssMlogInit(Void); EXTERN Void ssMlogIncrCounter(Void); EXTERN Void ssMemlogInit(Void); EXTERN Void ssMemlog(char *, U32 size); EXTERN Void ssMemlogWrite(Void); #endif /* TENB_T2K3K_SPECIFIC_CHANGES */ #endif #ifdef __cplusplus } #endif EXTERN Void SIncrementTtiCount(Void); EXTERN Ticks SGetTtiCount(Void); #ifdef TENB_T2K3K_SPECIFIC_CHANGES EXTERN Void mtStopHndlr(Void); #endif #ifdef TENB_RTLIN_CHANGES EXTERN Void ysPrntBkTrace(Void); EXTERN Void ssMlogInit(Void); EXTERN Void ssMlogIncrCounter(Void); #endif #ifdef SS_THR_REG_MAP EXTERN Void ssRegMainThread(Void); #endif #ifdef T2K_MEM_LEAK_DBG #define ssGetDBufOfSize(region,size,dBuf) ssGetDBufOfSizeNew(region,size,dBuf,__FILE__,__LINE__) S16 ssGetDBufOfSizeNew ARGS((Region region, Size size, Buffer **dBuf,char*,U32)); #else EXTERN S16 ssGetDBufOfSize(Region region,Size size,Buffer **dBuf); #endif /* ssi_x_001.main_69: Added MSPD debug macro */ #ifdef MSPD EXTERN void SEND_DBG_MSG(U8 *str, ...); #endif #endif /* __SSIX__ */ /********************************************************************30** End of file **********************************************************************/