X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fmt%2Fss_rbuf.c;h=120407c113975c1ce62146d5bbbfcccf2ecdffc7;hb=22b9cbea0d857b740c9e7268e61262ac9c0c9bdc;hp=e0ef97c1c677eb544f08088122afcd5bc964fc12;hpb=829bbd114f1c3dc00c1da47bca0a8207c049df3f;p=o-du%2Fl2.git diff --git a/src/mt/ss_rbuf.c b/src/mt/ss_rbuf.c index e0ef97c1c..120407c11 100755 --- a/src/mt/ss_rbuf.c +++ b/src/mt/ss_rbuf.c @@ -39,19 +39,19 @@ #include "ss_rbuf.h" #include "ss_rbuf.x" -U32 ssRngBufStatus = 0; +uint32_t ssRngBufStatus = 0; /* Global Ring Loop Up Table */ SsRngBufTbl SsRngInfoTbl[SS_RNG_BUF_MAX]; -PUBLIC Void SsRngBufEnable(Void) +Void SsRngBufEnable(Void) { ssRngBufStatus = TRUE; } -PUBLIC Void SsRngBufDisable(Void) +Void SsRngBufDisable(Void) { ssRngBufStatus = FALSE; @@ -62,23 +62,14 @@ Desc: Creates Ring Buffer for the given Id. Ring Structure is allocated from given Region and Pool */ -#ifdef ANSI -PUBLIC S16 SCreateSRngBuf +S16 SCreateSRngBuf ( -U32 id, +uint32_t id, Region region, Pool pool, -U32 elmSize, -U32 rngSize +uint32_t elmSize, +uint32_t rngSize ) -#else -PUBLIC S16 SCreateSRngBuf (id, region, pool, elmSize, rngSize) -U32 id; -Region region; -Pool pool; -U32 elmSize; -U32 rngSize; -#endif { SsRngBuf* ring; @@ -88,7 +79,7 @@ U32 rngSize; #if (ERRCLASS & ERRCLS_DEBUG) SSLOGERROR(ERRCLS_DEBUG, ESSXXX, id, "Invalid RBUF ID"); #endif - RETVALUE(RFAILED); + return RFAILED; } if(SsRngInfoTbl[id].r_addr != 0) { @@ -96,7 +87,7 @@ U32 rngSize; SSLOGERROR(ERRCLS_DEBUG, ESSXXX, id, "Failed to Create Ring Buffer Id Ring already exist"); #endif - RETVALUE(RFAILED); + return RFAILED; } /* Get Element Size */ @@ -108,7 +99,7 @@ U32 rngSize; #if (ERRCLASS & ERRCLS_DEBUG) SSLOGERROR(ERRCLS_INT_PAR, ESSXXX, ERRZERO, "Allocating Ring Failed!!!") #endif - RETVALUE(RFAILED); + return RFAILED; } #if (ERRCLASS & ERRCLS_DEBUG) SSLOGERROR(ERRCLS_DEBUG, ESSXXX, ring, @@ -128,7 +119,7 @@ U32 rngSize; SSLOGERROR(ERRCLS_INT_PAR, ESSXXX, ERRZERO, "Allocating Ring Failed!!!") #endif free(ring); - RETVALUE(RFAILED); + return RFAILED; } /* Update Buffer Id Table */ SsRngInfoTbl[id].r_addr = ring; @@ -137,11 +128,11 @@ U32 rngSize; SsRngInfoTbl[id].n_read = 0; #ifndef ALIGN_64BIT - printf("Ring Buffer Created with id =%ld rSize:%ld eSize:%ld %lx\n",id,ring->size,ring->type,(PTR)ring); + printf("\nRing Buffer Created with id =%ld rSize:%ld eSize:%ld %lx\n",id,ring->size,ring->type,(PTR)ring); #else - printf("Ring Buffer Created with id =%d rSize:%d eSize:%d %lx\n",id,ring->size,ring->type,(PTR)ring); + printf("\nRing Buffer Created with id =%d rSize:%d eSize:%d %lx\n",id,ring->size,ring->type,(PTR)ring); #endif - RETVALUE(ROK); + return ROK; } /* @@ -149,19 +140,12 @@ Func: SAttachSRngBuf Desc: Attach the calling Entity to a ring buffer as consumer(Rx) or producer (Tx) */ -#ifdef ANSI -PUBLIC S16 SAttachSRngBuf +S16 SAttachSRngBuf ( -U32 id, -U32 ent, -U32 txRx +uint32_t id, +uint32_t ent, +uint32_t txRx ) -#else -PUBLIC S16 SAttachSRngBuf (id, ent, txRx) -U32 id; -U32 ent; -U32 txRx; -#endif { /* Retrive Buffer from Global Info Table */ if( id >= SS_RNG_BUF_MAX) @@ -169,7 +153,7 @@ U32 txRx; #if (ERRCLASS & ERRCLS_DEBUG) SSLOGERROR(ERRCLS_DEBUG, ESSXXX, id, "Invalid RBUF ID"); #endif - RETVALUE(RFAILED); + return RFAILED; } if(SsRngInfoTbl[id].rngState < SS_RNG_CREATED) { @@ -178,13 +162,13 @@ U32 txRx; "Attach Request in Invalid Ring ID"); #endif #ifndef ALIGN_64BIT - printf("Attach Request in Invalid Ring State %ld id%ld \n", + printf("\nAttach Request in Invalid Ring State %ld id%ld \n", SsRngInfoTbl[id].rngState,id); #else - printf("Attach Request in Invalid Ring State %d id%d \n", + printf("\nAttach Request in Invalid Ring State %d id%d \n", SsRngInfoTbl[id].rngState,id); #endif - RETVALUE(RFAILED); + return RFAILED; } if(txRx == SS_RNG_TX) { @@ -196,27 +180,21 @@ U32 txRx; SsRngInfoTbl[id].rxEnt = ent; SsRngInfoTbl[id].rngState = SS_RNG_RX_ATTACHED; } - RETVALUE(ROK); + return ROK; } /* Func: SConnectSRngBuf Desc: Establish a pipe between producer and consumer */ -#ifdef ANSI -PUBLIC S16 SConnectSRngBuf +S16 SConnectSRngBuf ( -U32 id, -U32 rxEnt +uint32_t id, +uint32_t rxEnt ) -#else -PUBLIC S16 SConnectSRngBuf (id, rxEnt) -U32 id; -U32 rxEnt; -#endif { /* Send to Reciever ENT*/ - RETVALUE(ROK); + return ROK; } /* @@ -225,10 +203,6 @@ Desc: Checks if Ring is full */ inline static S16 IsFull(SsRngBuf* rBuf) { -#if 0 - /* write+1 == read implies ring is full */ - return ((((rBuf->write + 1)> rBuf->size)?0:(rBuf->write+1))==rBuf->read); -#endif #if 1 if((rBuf->write+1) == rBuf->read) { @@ -255,7 +229,7 @@ inline static S16 IsEmpty(SsRngBuf* rBuf) return (rBuf->write == rBuf->read); } -PUBLIC S16 isRngEmpty(U32 id) +S16 isRngEmpty(uint32_t id) { return (IsEmpty(SsRngInfoTbl[id].r_addr)); } @@ -263,116 +237,85 @@ PUBLIC S16 isRngEmpty(U32 id) Func: SEnqSRngBuf Desc: Perform Queue operation on Ring bufer */ -#ifdef ANSI -PUBLIC S16 SEnqSRngBuf +S16 SEnqSRngBuf ( -U32 id, +uint32_t id, Void* elem ) -#else -PUBLIC S16 SEnqSRngBuf(id,elem) -U32 id; -Void* elem; -#endif { - U8* w_ptr; - U8 i=0; - U8 *element = (U8 *)elem; - U32 wrIndex; + uint8_t* w_ptr; + uint8_t i=0; + uint8_t *element = (uint8_t *)elem; + uint32_t wrIndex; /* TBD To replace id with ring addr when SAttachSRngBuf is used*/ /* Retrive Buffer from Id */ SsRngBuf* ring = SsRngInfoTbl[id].r_addr; if (IsFull(ring)) { SsRngInfoTbl[id].nWriteFail++; - RETVALUE(RFAILED); + return RFAILED; } /* TBD Avoid multiplication for optimisation */ - w_ptr = (U8*)ring->elem + (ring->write * ring->type); + w_ptr = (uint8_t*)ring->elem + (ring->write * ring->type); /* TBD Avoid for loop - use memcpy */ for( i=0; i < ring->type; i++) { - *(U8*)w_ptr = *(U8*)element; + *(uint8_t*)w_ptr = *(uint8_t*)element; w_ptr++; - (U8*)element++; + (uint8_t*)element++; } /* Increment write index */ wrIndex = ring->write + 1 ; ring->write = (wrIndex == ring->size)?0: wrIndex; /* Update Statistics */ SsRngInfoTbl[id].n_write++; - RETVALUE(ROK); + return ROK; } -#ifdef ANSI -PUBLIC S16 SGetNumElemInRng -( -U32 id -) -#else -PUBLIC S16 SGetNumElemInRng (id) -U32 id; -#endif +S16 SGetNumElemInRng(uint32_t id) { S16 freeDist = (SsRngInfoTbl[id].n_write- SsRngInfoTbl[id].n_read); - RETVALUE(freeDist); + return (freeDist); } /* Func: SDeqSRngBuf Desc: Perform DeQueue operation on Ring bufer */ -#ifdef ANSI -PUBLIC S16 SDeqSRngBuf -( -U32 id, -Void *elem -) -#else -PUBLIC S16 SDeqSRngBuf (id,elem) -U8 id; -Void *elem; -#endif +S16 SDeqSRngBuf(uint32_t id,Void *elem) { - U8* r_ptr; - U8 i=0; - U8 *element = (U8 *)elem; - U32 rdIndex; + uint8_t* r_ptr; + uint8_t i=0; + uint8_t *element = (uint8_t *)elem; + uint32_t rdIndex; /* Retrive Buffer from Id*/ SsRngBuf* ring = SsRngInfoTbl[id].r_addr; if(IsEmpty(ring)) { SsRngInfoTbl[id].nReadFail++; - RETVALUE(RFAILED); + return RFAILED; } - r_ptr = (U8*)ring->elem + (ring->read * ring->type); + r_ptr = (uint8_t*)ring->elem + (ring->read * ring->type); for(i=0; itype; i++) { - *(U8*)element = *r_ptr; - (U8*)element++; + *(uint8_t*)element = *r_ptr; + (uint8_t*)element++; r_ptr++; } // Avoiding % operation for wrap around rdIndex= ring->read + 1; ring->read = (rdIndex == ring->size)?0:rdIndex; SsRngInfoTbl[id].n_read++; - RETVALUE(ROK); + return ROK; } -#ifdef ANSI -PUBLIC S16 SDestroySRngBuf +S16 SDestroySRngBuf ( -U32 id, +uint32_t id, Region region, Pool pool ) -#else -PUBLIC S16 SDestroySRngBuf(id, region, pool) -U32 id; -Region region; -Pool pool; -#endif { /* Retrive Buffer from Id */ SsRngBuf* ring = SsRngInfoTbl[id].r_addr; @@ -388,25 +331,17 @@ Pool pool; SsRngInfoTbl[id].rngState = SS_RNG_DESTROYED; SsRngInfoTbl[id].r_addr = 0; } - RETVALUE(ROK); + return ROK; } -#ifdef ANSI -PUBLIC S16 SPrintSRngStats -( -Void -) -#else -PUBLIC S16 SPrintSRngStats () -Void; -#endif +S16 SPrintSRngStats(Void) { -U32 i; +uint32_t i; Txt prntBuf[100]; #ifdef RGL_SPECIFIC_CHANGES - RETVALUE(ROK); + return ROK; #endif for(i=0; i< SS_RNG_BUF_MAX;i++) { @@ -462,66 +397,42 @@ U32 i; #endif } } - RETVALUE(ROK); + return ROK; } -#ifdef ANSI -PUBLIC Void* SRngGetWIndx -( -U32 rngId -) -#else -PUBLIC Void* SRngGetWIndx (rngId) -U32 rngId; -#endif +Void* SRngGetWIndx(uint32_t rngId) { /* Retrive Buffer from Id*/ SsRngBuf* ring = SsRngInfoTbl[rngId].r_addr; if (IsFull(ring)) { SsRngInfoTbl[rngId].nWriteFail++; - RETVALUE(NULLP); + return (NULLP); } else { - RETVALUE(((U8 *)ring->elem) + (ring->type * ring->write)); + return (((uint8_t *)ring->elem) + (ring->type * ring->write)); } } -#ifdef ANSI -PUBLIC Void* SRngGetRIndx -( -U32 rngId -) -#else -PUBLIC Void* SRngGetRIndx (rngId) -U32 rngId; -#endif +Void* SRngGetRIndx(uint32_t rngId) { /* Retrive Buffer from Id*/ SsRngBuf* ring = SsRngInfoTbl[rngId].r_addr; if(IsEmpty(ring)) { SsRngInfoTbl[rngId].nReadFail++; - RETVALUE(NULLP); + return (NULLP); } else { - RETVALUE(((U8 *)ring->elem) + (ring->type * ring->read)); + return (((uint8_t *)ring->elem) + (ring->type * ring->read)); } } -#ifdef ANSI -PUBLIC Void SRngIncrWIndx -( -U32 rngId -) -#else -PUBLIC Void SRngIncrWIndx (rngId) -U32 rngId; -#endif +Void SRngIncrWIndx(uint32_t rngId) { - U32 wrIndex; + uint32_t wrIndex; /* Retrive Buffer from Id*/ SsRngBuf* ring = SsRngInfoTbl[rngId].r_addr; wrIndex = ring->write + 1; @@ -530,17 +441,9 @@ U32 rngId; SsRngInfoTbl[rngId].n_write++; } -#ifdef ANSI -PUBLIC Void SRngIncrRIndx -( -U32 rngId -) -#else -PUBLIC Void SRngIncrRIndx (rngId) -U32 rngId; -#endif +Void SRngIncrRIndx(uint32_t rngId) { - U32 rdIndex; + uint32_t rdIndex; /* Retrive Buffer from Id*/ SsRngBuf* ring = SsRngInfoTbl[rngId].r_addr; rdIndex = ring->read + 1; @@ -550,7 +453,7 @@ U32 rngId; } #ifdef XEON_SPECIFIC_CHANGES #if (defined (MAC_FREE_RING_BUF) || defined (RLC_FREE_RING_BUF)) -S16 mtAddBufToRing(SsRngBufId ringId,void *bufPtr,U8 freeType) +S16 mtAddBufToRing(SsRngBufId ringId,void *bufPtr,uint8_t freeType) { S16 ret1 = ROK; @@ -572,44 +475,17 @@ S16 mtAddBufToRing(SsRngBufId ringId,void *bufPtr,U8 freeType) } else { - printf("Free Ring FULL id %d!!! \n",ringId); + printf("\nFree Ring FULL id %d!!! \n",ringId); SsRngInfoTbl[ringId].pktDrop++; ret1 = RFAILED; } - RETVALUE(ret1); + return (ret1); } #endif #endif -#if 0 -int main(int argc, char **argv) -{ - SCreateSRngBuf(1,sizeof(SsRngBuf), 10); - rngElem* buf; - /* Fill buffer with test elements 3 times */ - buf = (SsRngBuf*)malloc(sizeof(rngBuf)); - buf->ptr = 1; - SEnqSRngBuf(1, buf); - buf = (SsRngBuf*)malloc(sizeof(rngBuf)); - buf->ptr = 2; - SEnqSRngBuf(1, buf); - buf = (SsRngBuf*)malloc(sizeof(rngBuf)); - buf->ptr = 3; - SEnqSRngBuf(1, buf); - - SDeqSRngBuf(1,buf); - printf("buf 1 = %d",buf->ptr); - SDeqSRngBuf(1,buf); - printf("buf 2 = %d",buf->ptr); - SDeqSRngBuf(1,buf); - printf("buf 3 = %d",buf->ptr); - - return 0; -} -#endif - /********************************************************************** End of file **********************************************************************/