//! ferme le virtual device passé en param. renvoie ERROR s'il n'y arrive pas et SUCCESS sinon int close_vd(sci_desc_t *vd) { sci_error_t retval; if (vd != NULL) { SCIClose(*vd, NO_FLAGS, &retval); if (retval != SCI_ERR_OK) return ERROR; } return SUCCESS; }
void SCI_Transporter::disconnectImpl() { DBUG_ENTER("SCI_Transporter::disconnectImpl"); sci_error_t err; if(m_mapped){ setDisconnect(); DBUG_PRINT("info", ("connect status = %d, remote node = %d", (int)getConnectionStatus(), remoteNodeId)); disconnectRemote(); disconnectLocal(); } // Empty send buffer m_sendBuffer.m_dataSize = 0; m_initLocal=false; m_mapped = false; if(m_sciinit) { for(Uint32 i=0; i<m_adapters ; i++) { SCIClose(sciAdapters[i].scidesc, FLAGS, &err); if(err != SCI_ERR_OK) { report_error(TE_SCI_UNABLE_TO_CLOSE_CHANNEL); DBUG_PRINT("error", ("Cannot close channel to the driver. Error code 0x%x", err)); } } } m_sciinit=false; #ifdef DEBUG_TRANSPORTER ndbout << "total: " << i1024+ i10242048 + i2048+i2049 << endl; ndbout << "<1024: " << i1024 << endl; ndbout << "1024-2047: " << i10242048 << endl; ndbout << "==2048: " << i2048 << endl; ndbout << "2049-4096: " << i20484096 << endl; ndbout << "==4096: " << i4096 << endl; ndbout << ">4096: " << i4097 << endl; #endif DBUG_VOID_RETURN; }
void SCI_Transporter::closeSCI() { // Termination of SCI sci_error_t err; DBUG_ENTER("SCI_Transporter::closeSCI"); // Disconnect and remove remote segment disconnectRemote(); // Unmap and remove local segment disconnectLocal(); // Closes an SCI virtual device SCIClose(activeSCIDescriptor, FLAGS, &err); if(err != SCI_ERR_OK) { DBUG_PRINT("error", ("Cannot close SCI channel to the driver. Error code 0x%x", err)); } SCITerminate(); DBUG_VOID_RETURN; } // closeSCI()
int main(int argc,char *argv[]) { int counter; printf("\n %s compiled %s : %s\n\n",argv[0],__DATE__,__TIME__); if (argc<3) { Usage(); exit(-1); } /* Get the parameters */ for (counter=1; counter<argc; counter++) { if (!strcmp("-rn",argv[counter])) { // remoteNodeId = strtol(argv[counter+1],(char **) NULL,10); continue; } if (!strcmp("-size",argv[counter])) { segmentSize = strtol(argv[counter+1],(char **) NULL,10); continue; } if (!strcmp("-adapterno",argv[counter])) { localAdapterNo = strtol(argv[counter+1],(char **) NULL,10); continue; } if (!strcmp("-client",argv[counter])) { client = 1; continue; } if (!strcmp("-server",argv[counter])) { server = 1; continue; } if (!strcmp("-help",argv[counter])) { Usage(); exit(0); } } // if (remoteNodeId == 0) { // fprintf(stderr,"Remote node-id is not specified. Use -rn <remote node-id>\n"); // exit(-1); //} if (server == 0 && client == 0) { fprintf(stderr,"You must specify a client node or a server node\n"); exit(-1); } if (server == 1 && client == 1) { fprintf(stderr,"Both server node and client node is selected.\n"); fprintf(stderr,"You must specify either a client or a server node\n"); exit(-1); } /* Initialize the SISCI library */ SCIInitialize(NO_FLAGS, &error); if (error != SCI_ERR_OK) { fprintf(stderr,"SCIInitialize failed - Error code: 0x%x\n",error); exit(error); } /* Open a file descriptor */ SCIOpen(&sdOne,NO_FLAGS,&error); if (error != SCI_ERR_OK) { if (error == SCI_ERR_INCONSISTENT_VERSIONS) { fprintf(stderr,"Version mismatch between SISCI user library and SISCI driver\n"); } fprintf(stderr,"SCIOpen failed - Error code 0x%x\n",error); exit(error); } /* Open a file descriptor */ SCIOpen(&sdTwo,NO_FLAGS,&error); if (error != SCI_ERR_OK) { if (error == SCI_ERR_INCONSISTENT_VERSIONS) { fprintf(stderr,"Version mismatch between SISCI user library and SISCI driver\n"); } fprintf(stderr,"SCIOpen failed - Error code 0x%x\n",error); exit(error); } /* Get local node-id */ error = GetLocalNodeId(localAdapterNo, &localNodeId1); error = GetLocalNodeId(standbyAdapterNo, &localNodeId2); if (error != SCI_ERR_OK) { fprintf(stderr,"Could not find the local adapter %d\n", localAdapterNo); SCIClose(sdOne,NO_FLAGS,&error); SCIClose(sdTwo,NO_FLAGS,&error); exit(-1); } /* Print parameters */ PrintParameters(); if (client) { remoteNodeId1=324; remoteNodeId2=328; ShmemClientNode(); } else { remoteNodeId1=452; remoteNodeId2=456; ShmemServerNode(); } /* Close the file descriptor */ SCIClose(sdOne,NO_FLAGS,&error); SCIClose(sdTwo,NO_FLAGS,&error); if (error != SCI_ERR_OK) { fprintf(stderr,"SCIClose failed - Error code: 0x%x\n",error); } /* Free allocated resources */ SCITerminate(); return SCI_ERR_OK; }