/* * ======== SERVICES_Exit ======== * Purpose: * Discontinue usage of module; free resources when reference count * reaches 0. */ void SERVICES_Exit(void) { DBC_Require(cRefs > 0); GT_1trace(SERVICES_debugMask, GT_5CLASS, "SERVICES_Exit: cRefs 0x%x\n", cRefs); cRefs--; if (cRefs == 0) { /* Uninitialize all SERVICES modules here */ NTFY_Exit(); SYNC_Exit(); CLK_Exit(); REG_Exit(); LST_Exit(); KFILE_Exit(); DPC_Exit(); DBG_Exit(); CSL_Exit(); CFG_Exit(); MEM_Exit(); GT_exit(); } DBC_Ensure(cRefs >= 0); }
/* * ======== SERVICES_Exit ======== * Purpose: * Discontinue usage of module; free resources when reference count * reaches 0. */ void SERVICES_Exit(void) { /* Uninitialize all SERVICES modules here */ NTFY_Exit(); SYNC_Exit(); CLK_Exit(); REG_Exit(); DBG_Exit(); CFG_Exit(); MEM_Exit(); GT_exit(); }
/* * ======== SERVICES_Init ======== * Purpose: * Initializes SERVICES modules. */ bool SERVICES_Init(void) { bool fInit = true; bool fCFG, fDBG, fMEM; bool fREG, fSYNC, fCLK, fNTFY; GT_init(); GT_create(&SERVICES_debugMask, "OS"); /* OS for OSal */ /* Perform required initialization of SERVICES modules. */ fMEM = MEM_Init(); fSYNC = SYNC_Init(); fREG = REG_Init(); fCFG = CFG_Init(); fDBG = DBG_Init(); fCLK = CLK_Init(); fNTFY = NTFY_Init(); fInit = fCFG && fDBG && fMEM && fREG && fSYNC && fCLK; if (!fInit) { if (fNTFY) NTFY_Exit(); if (fSYNC) SYNC_Exit(); if (fCLK) CLK_Exit(); if (fREG) REG_Exit(); if (fDBG) DBG_Exit(); if (fCFG) CFG_Exit(); if (fMEM) MEM_Exit(); } return fInit; }
/* * ======== SERVICES_Init ======== * Purpose: * Initializes SERVICES modules. */ bool SERVICES_Init(void) { bool fInit = true; bool fCFG, fCSL, fDBG, fDPC, fKFILE, fLST, fMEM; bool fREG, fSYNC, fCLK, fNTFY; DBC_Require(cRefs >= 0); if (cRefs == 0) { GT_init(); GT_create(&SERVICES_debugMask, "OS"); /* OS for OSal */ GT_0trace(SERVICES_debugMask, GT_ENTER, "SERVICES_Init: entered\n"); /* Perform required initialization of SERVICES modules. */ fMEM = MEM_Init(); fREG = REG_Init(); fCFG = CFG_Init(); fCSL = CSL_Init(); fDBG = DBG_Init(); fDPC = DPC_Init(); fKFILE = KFILE_Init(); fLST = LST_Init(); fSYNC = SYNC_Init(); fCLK = CLK_Init(); fNTFY = NTFY_Init(); fInit = fCFG && fCSL && fDBG && fDPC && fKFILE && fLST && fMEM && fREG && fSYNC && fCLK; if (!fInit) { if (fNTFY) NTFY_Exit(); if (fSYNC) SYNC_Exit(); if (fCLK) CLK_Exit(); if (fREG) REG_Exit(); if (fLST) LST_Exit(); if (fKFILE) KFILE_Exit(); if (fDPC) DPC_Exit(); if (fDBG) DBG_Exit(); if (fCSL) CSL_Exit(); if (fCFG) CFG_Exit(); if (fMEM) MEM_Exit(); } } if (fInit) cRefs++; GT_1trace(SERVICES_debugMask, GT_5CLASS, "SERVICES_Init: cRefs 0x%x\n", cRefs); DBC_Ensure((fInit && (cRefs > 0)) || (!fInit && (cRefs >= 0))); return fInit; }