diff options
Diffstat (limited to 'src/usr/initservice/baseinitsvc')
-rw-r--r-- | src/usr/initservice/baseinitsvc/initservice.C | 41 | ||||
-rw-r--r-- | src/usr/initservice/baseinitsvc/initservice.H | 11 |
2 files changed, 42 insertions, 10 deletions
diff --git a/src/usr/initservice/baseinitsvc/initservice.C b/src/usr/initservice/baseinitsvc/initservice.C index a40317a30..3e89d3196 100644 --- a/src/usr/initservice/baseinitsvc/initservice.C +++ b/src/usr/initservice/baseinitsvc/initservice.C @@ -75,9 +75,18 @@ namespace SPLESS namespace INITSERVICE { +trace_desc_t *g_trac_initsvc = nullptr; -trace_desc_t *g_trac_initsvc = NULL; -TRAC_INIT(&g_trac_initsvc, "INITSVC", 2*KILOBYTE ); +/** + * @brief Instantiates trace object for INITSVC traces (if necessary) + */ +void initTrace() +{ + if ( nullptr == g_trac_initsvc ) + { + TRACE::TracInit l_tmp(&g_trac_initsvc, "INITSVC", 2*KILOBYTE ); + } +} /** * @brief start() task entry procedure @@ -86,6 +95,8 @@ TRAC_INIT(&g_trac_initsvc, "INITSVC", 2*KILOBYTE ); extern "C" void* _start(void *ptr) { + initTrace(); // initialize trace descriptor for module start + TRACFCOMP( g_trac_initsvc, "Executing Initialization Service module." ); @@ -619,6 +630,7 @@ InitService::InitService( ) : iv_iStep( 0 ), iv_iSubStep( 0 ) { + initTrace(); // Initialize trace descriptor for external interface mutex_init(&iv_registryMutex); } @@ -876,7 +888,9 @@ void InitService::_doShutdown(uint64_t i_status, (i->msgPriority <= LAST_PRE_MEM_FLUSH_PRIORITY)); ++i) { - TRACFCOMP(g_trac_initsvc,"notify priority=0x%x, queue=0x%x", i->msgPriority, i->msgQ ); + TRACFCOMP(g_trac_initsvc, "notify priority=0x%x, queue=0x%x, " + "msgType=0x%x, componentID=0x%x", i->msgPriority, i->msgQ, + i->msgType, i->compID ); l_msg->type = i->msgType; l_msg->data[0] = iv_worst_status; (void)msg_sendrecv(i->msgQ,l_msg); @@ -968,7 +982,8 @@ void doShutdownWithError ( uint64_t i_status, uint32_t i_error_info) } -bool InitService::registerShutdownEvent(msg_q_t i_msgQ, +bool InitService::registerShutdownEvent(compId_t i_compID, + msg_q_t i_msgQ, uint32_t i_msgType, EventPriority_t i_priority) { @@ -993,8 +1008,13 @@ bool InitService::registerShutdownEvent(msg_q_t i_msgQ, if(result) { + TRACFCOMP(g_trac_initsvc, "InitService::registerShutdownEvent: " + "componentID=0x%x, queue=0x%x, msgType=0x%x, priority=0x%x", + i_compID, i_msgQ, i_msgType, i_priority); + // add it to the queue, we'll sort it before sending - iv_regMsgQ.push_back(regMsgQ_t(i_msgQ, i_msgType, i_priority)); + iv_regMsgQ.push_back( regMsgQ_t(i_msgQ, i_msgType, + i_priority, i_compID) ); } } @@ -1019,6 +1039,11 @@ bool InitService::unregisterShutdownEvent(msg_q_t i_msgQ) // erase all instances if(r->msgQ == i_msgQ) { + TRACFCOMP(g_trac_initsvc, + "InitService::unregisterShutdownEvent: " + "componentID=0x%x, queue=0x%x, msgType=0x%x, priority=0x%x", + r->compID, r->msgQ, r->msgType, r->msgPriority); + result = true; iv_regMsgQ.erase(r); } @@ -1054,12 +1079,14 @@ void InitService::GetIstepData( uint8_t & o_step, /** * @see src/include/usr/initservice/initservicif.H */ -bool registerShutdownEvent(msg_q_t i_msgQ, +bool registerShutdownEvent(compId_t i_compID, + msg_q_t i_msgQ, uint32_t i_msgType, EventPriority_t i_priority) { return - Singleton<InitService>::instance().registerShutdownEvent(i_msgQ, + Singleton<InitService>::instance().registerShutdownEvent(i_compID, + i_msgQ, i_msgType, i_priority); } diff --git a/src/usr/initservice/baseinitsvc/initservice.H b/src/usr/initservice/baseinitsvc/initservice.H index c3b71584a..356b4b8f8 100644 --- a/src/usr/initservice/baseinitsvc/initservice.H +++ b/src/usr/initservice/baseinitsvc/initservice.H @@ -95,15 +95,18 @@ public: msg_q_t msgQ; uint32_t msgType; uint32_t msgPriority; + compId_t compID; /** * @brief Constructor */ regMsgQ_t(msg_q_t i_msgQ, uint32_t i_msgType, - EventPriority_t i_priority) : + EventPriority_t i_priority, + compId_t i_compId) : msgQ(i_msgQ), msgType(i_msgType), - msgPriority((uint32_t)i_priority) {} + msgPriority((uint32_t)i_priority), + compID(i_compId) {} // allow us to sort the queue based on priority bool operator < (const regMsgQ_t &msg ) const @@ -193,6 +196,7 @@ public: /** * @brief Register a service to be notified during shutdown * + * @param[in] i_compID, component registering event * @param[in] i_msgQ, A message queue to send a message to on shutdown * @param[in] i_msgType, The message type to send. * @param[in] i_priority, @See src/include/usr/initservice/initserviceif.H @@ -200,7 +204,8 @@ public: * @return true - i_msgQ registered * false - i_msgQ already registered.- not registered again. */ - bool registerShutdownEvent(msg_q_t i_msgQ, + bool registerShutdownEvent(compId_t i_compID, + msg_q_t i_msgQ, uint32_t i_msgType, EventPriority_t i_priority); |