void Cmvmi::execSTTOR(Signal* signal) { Uint32 theStartPhase = signal->theData[1]; jamEntry(); if (theStartPhase == 1){ jam(); if(m_ctx.m_config.lockPagesInMainMemory() == 1) { int res = NdbMem_MemLockAll(0); if(res != 0){ g_eventLogger.warning("Failed to memlock pages"); warningEvent("Failed to memlock pages"); } } sendSTTORRY(signal); return; } else if (theStartPhase == 3) { jam(); globalData.activateSendPacked = 1; sendSTTORRY(signal); } else if (theStartPhase == 8){ /*---------------------------------------------------*/ /* Open com to API + REP nodes */ /*---------------------------------------------------*/ signal->theData[0] = 0; // no answer signal->theData[1] = 0; // no id signal->theData[2] = NodeInfo::API; execOPEN_COMREQ(signal); globalData.theStartLevel = NodeState::SL_STARTED; sendSTTORRY(signal); } }
PXEService::PXEService(const QString &serverRoot, const QString &bootFile, QObject *parent) : QObject(parent) { responder = new PXEResponder(bootFile, this); connect(responder, SIGNAL(verboseEvent(QString)), this, SLOT(on_dhcp_message(QString))); connect(responder, SIGNAL(warningEvent(QString)), this, SLOT(on_dhcp_message(QString))); connect(responder, SIGNAL(errorEvent(QString)), this, SLOT(on_dhcp_message(QString))); tftpServer = new TFTPServer(serverRoot, this); connect(tftpServer, SIGNAL(verboseEvent(QString)), this, SLOT(on_dhcp_message(QString))); connect(tftpServer, SIGNAL(warningEvent(QString)), this, SLOT(on_dhcp_message(QString))); connect(tftpServer, SIGNAL(errorEvent(QString)), this, SLOT(on_dhcp_message(QString))); }
/** * execROUTE_ORD * Allows other blocks to route signals as if they * came from TRPMAN * Useful in ndbmtd for synchronising signals w.r.t * external signals received from other nodes which * arrive from the same thread that runs TRPMAN */ void Trpman::execROUTE_ORD(Signal* signal) { jamEntry(); if (!assembleFragments(signal)) { jam(); return; } SectionHandle handle(this, signal); RouteOrd* ord = (RouteOrd*)signal->getDataPtr(); Uint32 dstRef = ord->dstRef; Uint32 srcRef = ord->srcRef; Uint32 gsn = ord->gsn; /* ord->cnt ignored */ Uint32 nodeId = refToNode(dstRef); if (likely((nodeId == 0) || getNodeInfo(nodeId).m_connected)) { jam(); Uint32 secCount = handle.m_cnt; ndbrequire(secCount >= 1 && secCount <= 3); jamLine(secCount); /** * Put section 0 in signal->theData */ Uint32 sigLen = handle.m_ptr[0].sz; ndbrequire(sigLen <= 25); copy(signal->theData, handle.m_ptr[0]); SegmentedSectionPtr save = handle.m_ptr[0]; for (Uint32 i = 0; i < secCount - 1; i++) handle.m_ptr[i] = handle.m_ptr[i+1]; handle.m_cnt--; sendSignal(dstRef, gsn, signal, sigLen, JBB, &handle); handle.m_cnt = 1; handle.m_ptr[0] = save; releaseSections(handle); return ; } releaseSections(handle); warningEvent("Unable to route GSN: %d from %x to %x", gsn, srcRef, dstRef); }