Collaboration diagram for Converse Machine Layer:
|
The machine layer of Converse consist of few common files to all architectures, shown in this module, which are:
These files describe the common characteristics of all implementations, and provide converse, and every language built on top of it the same functional interface in all machines, however different they are.
In addition to these common files, there are files called "machine.c" which are the real implementation for the different architectures. Every file is in a different directory, and get selected for compilation at compile time through the "build" script. With this implementation, only one single machine layer can be compiled into the runtime system. Changing architecture needs a different compilation.
| typedef struct CmiStateStruct * CmiState |
| typedef struct CmiNodeStateStruct CmiNodeState |
| typedef struct CircQueueStruct * CircQueue |
| typedef struct PCQueueStruct * PCQueue |
| typedef struct _PersistentRequestMsg PersistentRequestMsg |
| typedef struct _PersistentReqGrantedMsg PersistentReqGrantedMsg |
| typedef struct _PersistentDestoryMsg PersistentDestoryMsg |
| typedef struct _PersistentSendsTable PersistentSendsTable |
| typedef struct _PersistentReceivesTable PersistentReceivesTable |
| void CmiPushImmediateMsg | ( | void * | msg | ) |
Definition at line 35 of file immediate.c.
References CmiLock(), and CmiUnlock().
Referenced by CmiHandleImmediate(), CmiPushNode(), CmiPushPE(), CommunicationServer(), and KillOnAllSigs().
| void CmiDelayImmediate | ( | void | ) |
Definition at line 55 of file immediate.c.
References _immRunning, CQdCreate(), and currentImmediateMsg.
Referenced by _processForNodeBocMsg(), CldAskLoadHandler(), and CkNodeReductionMgr::RecvMsg().
| void CmiHandleImmediateMessage | ( | void * | msg | ) |
Definition at line 72 of file immediate.c.
References _immRunning, CQdProcess(), CmiHandlerInfo::hdlr, and CmiHandlerInfo::userPtr.
Referenced by CmiHandleImmediate(), and CmiSendSelf().
| void CmiHandleImmediate | ( | ) |
Definition at line 92 of file immediate.c.
References _immediateReady, _immRunning, CmiHandleImmediateMessage(), CmiPushImmediateMsg(), CmiTryLock(), CmiUnlock(), currentImmediateMsg, and PCQueuePop().
Referenced by CommunicationServer(), KillOnAllSigs(), and PumpMsgs().
Definition at line 580 of file machine-smp.c.
References CdsFifo_Create(), CmiIdleLock_init(), CmiStateStruct::idle, CmiStateStruct::localqueue, PCQueueCreate(), CmiStateStruct::pe, CmiStateStruct::rank, and CmiStateStruct::recv.
Referenced by call_startfn(), CmiStartThreads(), and KillOnAllSigs().
| void CommunicationServerInit | ( | ) |
Definition at line 2758 of file convcore.c.
References CQdCpvInit().
Referenced by call_startfn(), and KillOnAllSigs().
| CmiState CmiGetState | ( | ) |
Definition at line 103 of file machine-smp.c.
References Cmi_default_state, and Cmi_state_key.
Referenced by CmiAsyncBroadcastFn(), CmiFreeBroadcastAllFn(), CmiFreeSendFn(), CmiGetNonLocal(), CmiMyPe(), CmiMyRank(), CmiNotifyGetState(), CmiNotifyStillIdle(), CmiSyncBroadcastAllFn(), CmiSyncBroadcastFn(), CmiSyncSendFn(), CmiSyncSendFn1(), CmiSyncSendPersistent(), CommunicationServer(), ConverseRunPE(), ElanSendFn(), KillOnAllSigs(), PumpMsgsBlocking(), and SendSpanningChildren().
| CmiNodeLock CmiCreateLock | ( | void | ) |
Definition at line 115 of file machine-smp.c.
References malloc().
Referenced by _initCharm(), bgMain(), CkNodeReductionMgr::CkNodeReductionMgr(), CldModuleGeneralInit(), CmiAmmassoOpenQueuePairs(), CmiNodeStateInit(), CmiStartThreads(), CommunicationServer(), ConverseInit(), CsdInit(), establishQPConnection(), CkArrayReductionMgr::init(), LBDatabase::initnodeFn(), KillOnAllSigs(), NodeGroup::NodeGroup(), PCQueueCreate(), CkArrayReductionMgr::pup(), and CkNodeReductionMgr::pup().
| void CmiDestroyLock | ( | CmiNodeLock | lk | ) |
Definition at line 121 of file machine-smp.c.
References free().
Referenced by CmiMachineExit(), and NodeGroup::~NodeGroup().
| void CmiYield | ( | void | ) |
| static DWORD WINAPI call_startfn | ( | LPVOID | vindex | ) | [static] |
Definition at line 154 of file machine-smp.c.
References _Cmi_mynodesize, Cmi_charmrun_fd, Cmi_state_key, Cmi_state_vector, CommunicationServerInit(), CommunicationServerThread(), ConverseRunPE(), and PerrorExit().
Referenced by CmiStartThreads().
| void CmiNodeBarrierCount | ( | int | nThreads | ) |
Definition at line 184 of file machine-smp.c.
References barrier_mutex, barrier_wait, barrier_which, and sleep().
Referenced by CmiNodeAllBarrier(), and CmiNodeBarrier().
| static void CmiStartThreads | ( | char ** | argv | ) | [static] |
Definition at line 203 of file machine-smp.c.
References _Cmi_mynode, _Cmi_mynodesize, barrier_mutex, call_startfn(), calloc(), Cmi_commthread, Cmi_nodestart, Cmi_state_key, Cmi_state_vector, CmiCreateLock(), CmiMemLock_lock, CmiStateInit(), comm_mutex, and PerrorExit().
| static void CmiDestoryLocks | ( | ) | [static] |
Definition at line 241 of file machine-smp.c.
References barrier_mutex, CmiMemLock_lock, and comm_mutex.
| void CmiCommLock | ( | void | ) |
Definition at line 338 of file machine-smp.c.
References CmiAbort(), CmiLock(), and comm_mutex_isLocked.
Referenced by CmiLongSendQueue(), CommunicationsClockCaller(), CommunicationServer(), and KillOnAllSigs().
| void CmiCommUnlock | ( | void | ) |
Definition at line 344 of file machine-smp.c.
References CmiAbort(), CmiUnlock(), and comm_mutex_isLocked.
Referenced by CmiLongSendQueue(), CommunicationsClockCaller(), CommunicationServer(), and KillOnAllSigs().
| static void* call_startfn | ( | void * | vindex | ) | [static] |
Definition at line 368 of file machine-smp.c.
References _Cmi_mynode, _Cmi_mynodesize, Cmi_charmrun_fd, Cmi_mystate, Cmi_nodestart, Cmi_state_key, Cmi_state_vector, CmiStateInit(), CommunicationServer(), CommunicationServerInit(), and ConverseRunPE().
| void CmiNodeBarrier | ( | void | ) |
Definition at line 453 of file machine-smp.c.
References CmiNodeBarrierCount().
Referenced by _initDone(), CkRestartMain(), ConverseExit(), ConverseRunPE(), and KillOnAllSigs().
| void CmiNodeAllBarrier | ( | void | ) |
Definition at line 460 of file machine-smp.c.
References Cmi_commthread, and CmiNodeBarrierCount().
Referenced by _initCharm(), CmiBarrier(), CmiBarrierZero(), CmiInitCPUAffinity(), CmiTimerInit(), CommunicationServer(), CsdInit(), InitCallTable::enumerateInitCalls(), init_ranges(), and KillOnAllSigs().
| static void CmiIdleLock_init | ( | CmiIdleLock * | l | ) | [static] |
Definition at line 480 of file machine-smp.c.
References CmiIdleLock::hasMessages, CmiIdleLock::isSleeping, and CmiIdleLock::sem.
Referenced by CmiStateInit().
| static void CmiIdleLock_sleep | ( | CmiIdleLock * | l, | |
| int | msTimeout | |||
| ) | [static] |
Definition at line 486 of file machine-smp.c.
References CmiIdleLock::hasMessages, CmiIdleLock::isSleeping, and CmiIdleLock::sem.
Referenced by CmiNotifyStillIdle(), and CommunicationServer().
| static void CmiIdleLock_addMessage | ( | CmiIdleLock * | l | ) | [static] |
Definition at line 495 of file machine-smp.c.
References CmiIdleLock::hasMessages, CmiIdleLock::isSleeping, and CmiIdleLock::sem.
Referenced by CmiPushNode(), CmiPushPE(), and KillOnAllSigs().
| static void CmiIdleLock_checkMessage | ( | CmiIdleLock * | l | ) | [static] |
Definition at line 502 of file machine-smp.c.
References CmiIdleLock::hasMessages.
Referenced by CmiGetNonLocal(), CommunicationServer(), and KillOnAllSigs().
| static void getTimespec | ( | int | msFromNow, | |
| struct timespec * | dest | |||
| ) | [static] |
Definition at line 515 of file machine-smp.c.
| static void CmiIdleLock_wakeup | ( | CmiIdleLock * | l | ) | [static] |
Definition at line 550 of file machine-smp.c.
| void CmiNodeStateInit | ( | CmiNodeState * | nodeState | ) |
Definition at line 591 of file machine-smp.c.
References CmiCreateLock(), CmiNodeStateStruct::CmiNodeRecvLock, CmiNodeStateStruct::delayedImmQ, CmiNodeStateStruct::immQ, CmiNodeStateStruct::immRecvLock, CmiNodeStateStruct::immSendLock, CmiNodeStateStruct::NodeRecv, and PCQueueCreate().
Referenced by CommunicationServer(), ConverseInit(), and KillOnAllSigs().
| PCQueue PCQueueCreate | ( | void | ) |
Definition at line 112 of file pcqueue.h.
References calloc(), CmiCreateLock(), PCQueueStruct::head, PCQueueStruct::len, PCQueueStruct::lock, malloc(), and PCQueueStruct::tail.
Referenced by CmiNodeStateInit(), CmiStateInit(), CommunicationServer(), ConverseInit(), and initInfiCmiChunkPools().
Definition at line 135 of file pcqueue.h.
References CircQueueStruct::data, data, PCQueueStruct::head, and CircQueueStruct::pull.
Referenced by CmiNotifyStillIdle(), CommunicationServer(), elan_CmiAlloc(), infi_CmiFree(), KillOnAllSigs(), MsgQueueEmpty(), PumpMsgsBlocking(), and RecvQueueEmpty().
Definition at line 142 of file pcqueue.h.
References PCQueueStruct::len.
Referenced by CommunicationServer(), and infi_CmiFree().
| char* PCQueuePop | ( | PCQueue | Q | ) |
Definition at line 147 of file pcqueue.h.
References calloc(), CmiLock(), CmiUnlock(), CircQueueStruct::data, data, free(), PCQueueStruct::head, PCQueueStruct::len, PCQueueStruct::lock, malloc(), CircQueueStruct::next, CircQueueStruct::pull, CircQueueStruct::push, and PCQueueStruct::tail.
Referenced by CmiGetNonLocal(), CmiHandleImmediate(), CommunicationServer(), elan_CmiAlloc(), infi_CmiFree(), and KillOnAllSigs().
| void initSendSlot | ( | PersistentSendsTable * | slot | ) |
Definition at line 57 of file persist-comm.c.
References _PersistentSendsTable::destAddress, _PersistentSendsTable::destHandle, _PersistentSendsTable::destPE, _PersistentSendsTable::destSizeAddress, _PersistentSendsTable::messageBuf, _PersistentSendsTable::messageSize, _PersistentSendsTable::sizeMax, and _PersistentSendsTable::used.
Referenced by CmiDestoryAllPersistent(), CmiDestoryPersistent(), and CmiPersistentInit().
| void swapSendSlotBuffers | ( | PersistentSendsTable * | slot | ) |
Definition at line 72 of file persist-comm.c.
References _PersistentSendsTable::destAddress, and _PersistentSendsTable::destSizeAddress.
Referenced by CmiSendPersistentMsg().
| void initRecvSlot | ( | PersistentReceivesTable * | slot | ) |
Definition at line 84 of file persist-comm.c.
References _PersistentReceivesTable::messagePtr, _PersistentReceivesTable::next, _PersistentReceivesTable::prev, _PersistentReceivesTable::recvSizePtr, and _PersistentReceivesTable::sizeMax.
Referenced by getFreeRecvSlot().
| void swapRecvSlotBuffers | ( | PersistentReceivesTable * | slot | ) |
Definition at line 95 of file persist-comm.c.
References _PersistentReceivesTable::messagePtr, and _PersistentReceivesTable::recvSizePtr.
Referenced by PumpPersistent().
| PersistentHandle getFreeSendSlot | ( | ) |
Definition at line 107 of file persist-comm.c.
References CmiAbort(), persistentSendsTable, and persistentSendsTableCount.
Referenced by CmiCreatePersistent(), and CmiRegisterReceivePersistent().
| PersistentHandle getFreeRecvSlot | ( | ) |
Definition at line 117 of file persist-comm.c.
References CmiAlloc(), initRecvSlot(), _PersistentReceivesTable::next, persistentReceivesTableCount, persistentReceivesTableHead, persistentReceivesTableTail, and _PersistentReceivesTable::prev.
Referenced by CmiCreateReceiverPersistent(), and persistentRequestHandler().
| PersistentHandle CmiCreatePersistent | ( | int | destPE, | |
| int | maxBytes | |||
| ) |
Definition at line 150 of file persist-comm.c.
| static void persistentRequestHandler | ( | void * | env | ) | [static] |
Definition at line 170 of file persist-comm.c.
References CmiAlloc(), CmiFree(), Converse::CmiSyncSendAndFree(), _PersistentReqGrantedMsg::destHandlerIndex, getFreeRecvSlot(), _PersistentRequestMsg::maxBytes, _PersistentReceivesTable::messagePtr, _PersistentReqGrantedMsg::msgAddr, persistentReqGrantedHandlerIdx, _PersistentReceivesTable::recvSizePtr, _PersistentRequestMsg::requestorPE, setupRecvSlot(), _PersistentReqGrantedMsg::slotFlagAddress, _PersistentRequestMsg::sourceHandlerIndex, and _PersistentReqGrantedMsg::sourceHandlerIndex.
Referenced by CmiPersistentInit().
| static void persistentReqGrantedHandler | ( | void * | env | ) | [static] |
Definition at line 199 of file persist-comm.c.
References CmiSendPersistentMsg(), _PersistentSendsTable::destAddress, _PersistentSendsTable::destHandle, _PersistentReqGrantedMsg::destHandlerIndex, _PersistentSendsTable::destPE, _PersistentSendsTable::destSizeAddress, _PersistentSendsTable::messageBuf, _PersistentSendsTable::messageSize, _PersistentReqGrantedMsg::msgAddr, _PersistentReqGrantedMsg::slotFlagAddress, _PersistentReqGrantedMsg::sourceHandlerIndex, and _PersistentSendsTable::used.
Referenced by CmiPersistentInit().
| PersistentReq CmiCreateReceiverPersistent | ( | int | maxBytes | ) |
Definition at line 224 of file persist-comm.c.
| PersistentHandle CmiRegisterReceivePersistent | ( | PersistentReq | recvHand | ) |
Definition at line 245 of file persist-comm.c.
| void persistentDestoryHandler | ( | void * | env | ) |
Definition at line 268 of file persist-comm.c.
References CmiFree(), _PersistentDestoryMsg::destHandlerIndex, _PersistentReceivesTable::messagePtr, _PersistentReceivesTable::next, PerFree(), persistentReceivesTableCount, persistentReceivesTableHead, persistentReceivesTableTail, and _PersistentReceivesTable::prev.
Referenced by CmiPersistentInit().
| void CmiDestoryPersistent | ( | PersistentHandle | h | ) |
Definition at line 297 of file persist-comm.c.
References CmiAbort(), CmiAlloc(), Converse::CmiSyncSendAndFree(), _PersistentSendsTable::destHandle, _PersistentDestoryMsg::destHandlerIndex, _PersistentSendsTable::destPE, initSendSlot(), persistentDestoryHandlerIdx, and persistentSendsTableCount.
| void CmiDestoryAllPersistent | ( | ) |
Definition at line 318 of file persist-comm.c.
References CmiFree(), CmiPrintf(), initSendSlot(), _PersistentReceivesTable::messagePtr, _PersistentReceivesTable::next, PerFree(), persistentReceivesTableCount, persistentReceivesTableHead, persistentReceivesTableTail, persistentSendsTable, persistentSendsTableCount, and _PersistentReceivesTable::recvSizePtr.
| void CmiPersistentInit | ( | ) |
Definition at line 344 of file persist-comm.c.
| void CmiUsePersistentHandle | ( | PersistentHandle * | p, | |
| int | n | |||
| ) |
Definition at line 365 of file persist-comm.c.
| void* PerAlloc | ( | int | size | ) |
Definition at line 259 of file persistent.c.
References CmiAlloc(), and size.
Referenced by KillOnAllSigs(), and setupRecvSlot().
| void PerFree | ( | char * | msg | ) |
Definition at line 264 of file persistent.c.
References elan_CmiStaticFree().
Referenced by CmiDestoryAllPersistent(), KillOnAllSigs(), and persistentDestoryHandler().
| void CmiSendPersistentMsg | ( | PersistentHandle | h, | |
| int | destPE, | |||
| int | size, | |||
| void * | m | |||
| ) |
Definition at line 63 of file persistent.c.
References CmiAbort(), CmiFree(), CmiMyPe(), CmiPrintf(), Converse::CmiSyncSendAndFree(), _PersistentSendsTable::destAddress, _PersistentSendsTable::destPE, _PersistentSendsTable::destSizeAddress, elan_base, _PersistentSendsTable::messageBuf, _PersistentSendsTable::messageSize, phs, phsSize, size, _PersistentSendsTable::sizeMax, pmsg_list::strategy, swapSendSlotBuffers(), and _PersistentSendsTable::used.
Referenced by CmiSyncSendPersistent(), ElanSendFn(), KillOnAllSigs(), and persistentReqGrantedHandler().
| int PumpPersistent | ( | ) |
Definition at line 204 of file persistent.c.
References CmiAlloc(), CmiPushPE(), CmiReference(), _PersistentReceivesTable::messagePtr, pmsg_list::msg, _PersistentReceivesTable::next, persistentReceivesTableHead, _PersistentReceivesTable::recvSizePtr, SendSpanningChildren(), size, status(), and swapRecvSlotBuffers().
Referenced by CommunicationServer(), KillOnAllSigs(), and PumpMsgs().
| void setupRecvSlot | ( | PersistentReceivesTable * | slot, | |
| int | maxBytes | |||
| ) |
Definition at line 274 of file persistent.c.
References _PersistentReceivesTable::messagePtr, PerAlloc(), _PersistentReceivesTable::recvSizePtr, and _PersistentReceivesTable::sizeMax.
Referenced by CmiCreateReceiverPersistent(), KillOnAllSigs(), and persistentRequestHandler().
| int _immediateReady = 0 |
Definition at line 15 of file immediate.c.
Referenced by CmiHandleImmediate(), CommunicationServer(), ConverseRunPE(), and KillOnAllSigs().
| int _immRunning = 0 |
Definition at line 17 of file immediate.c.
Referenced by CmiDelayImmediate(), CmiHandleImmediate(), CmiHandleImmediateMessage(), CommunicationServer(), and KillOnAllSigs().
void* currentImmediateMsg = NULL [static] |
Definition at line 25 of file immediate.c.
Referenced by CmiDelayImmediate(), and CmiHandleImmediate().
struct CmiStateStruct Cmi_default_state [static] |