+#define SCH_ALLOC(_datPtr, _size) \
+{ \
+ uint8_t _ret; \
+ _ret = SGetSBuf(SCH_MEM_REGION, SCH_POOL, \
+ (Data **)&_datPtr, _size); \
+ if(_ret == ROK) \
+ { \
+ SCH_MEM_LOG("SCH,ALLOC", __FILE__, __LINE__, __FUNCTION__, _size, _datPtr);\
+ memset(_datPtr, 0, _size); \
+ } \
+ else \
+ { \
+ _datPtr = NULLP; \
+ } \
+}
+
+/* free a static buffer */
+#define SCH_FREE(_datPtr, _size) \
+{ \
+ if(_datPtr) \
+ {\
+ SCH_MEM_LOG("SCH,FREE", __FILE__, __LINE__, __FUNCTION__, _size, _datPtr);\
+ SPutSBuf(SCH_MEM_REGION, SCH_POOL, \
+ (Data *)_datPtr,(Size) _size); \
+ _datPtr = NULLP; \
+ } \
+}
+
+/* Fill post structure for msg from SCH to MAC */
+#define FILL_PST_SCH_TO_MAC(_pst, _inst) \
+{ \
+ _pst.srcProcId = ODU_GET_PROCID(); \
+ _pst.dstProcId = ODU_GET_PROCID(); \
+ _pst.srcEnt = ENTMAC; \
+ _pst.dstEnt = ENTMAC; \
+ _pst.srcInst = 1; \
+ _pst.dstInst = 0; \
+ _pst.selector = ODU_SELECTOR_TC; \
+}
+
+/* Table array declarations */
+int8_t coresetIdxTable[MAX_CORESET_INDEX][4];
+int8_t searchSpaceIdxTable[MAX_SEARCH_SPACE_INDEX][4];
+uint8_t defaultUlAckTbl[DEFAULT_UL_ACK_LIST_COUNT];
+uint8_t minMsg3SchTime[MAX_NUM_MU];
+uint8_t pucchResourceSet[MAX_PUCCH_RES_SET_IDX][4];
+uint8_t puschDeltaTable[MAX_MU_PUSCH];
+uint16_t prachCfgIdxTable[MAX_PRACH_CONFIG_IDX][8];
+uint16_t numRbForPrachTable[MAX_RACH_NUM_RB_IDX][5];
+uint8_t schCmnDlRvTbl[4];
+/* Functions declarations : Linked list handler */
+uint8_t addNodeToLList(CmLListCp *llist, void *blockToAdd, CmLList *currNode);
+uint8_t deleteNodeFromLList(CmLListCp *llist, CmLList *node);
+
+/* Functions declarations : Slot format handler */
+#ifdef NR_TDD
+SlotConfig schGetSlotSymbFrmt(uint16_t slot, uint32_t bitMap);
+uint8_t calculateSlotPatternLength(uint8_t scs, uint8_t periodicity);
+#endif
+
+/* Functions declarations : Resource allocation handler */
+uint16_t schCalcTbSize(uint32_t payLoadSize);