void CRYPTO_thread_setup(void) { int i; char filename[20]; lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(usema_t *)); if(!lock_cs) { /* Nothing we can do about this...void function! */ return; } strlcpy(filename,"/tmp/mttest.XXXXXX", sizeof(filename)); mktemp(filename); usconfig(CONF_STHREADIOOFF); usconfig(CONF_STHREADMALLOCOFF); usconfig(CONF_INITUSERS, 100); usconfig(CONF_LOCKTYPE, US_DEBUGPLUS); arena = usinit(filename); unlink(filename); for (i = 0; i < CRYPTO_num_locks(); i++) { lock_cs[i] = usnewsema(arena, 1); } CRYPTO_set_id_callback((unsigned long (*)())irix_thread_id); CRYPTO_set_locking_callback((void (*)())irix_locking_callback); }
void accept_mutex_init(void) { ptrdiff_t old; /* default is 8 */ #define CONF_INITUSERS_MAX 15 if ((old = usconfig(CONF_INITUSERS, CONF_INITUSERS_MAX)) == -1) { perror("usconfig"); exit(-1); } if ((old = usconfig(CONF_LOCKTYPE, US_NODEBUG)) == -1) { perror("usconfig"); exit(-1); } if ((old = usconfig(CONF_ARENATYPE, US_SHAREDONLY)) == -1) { perror("usconfig"); exit(-1); } if ((us = usinit("/dev/zero")) == NULL) { perror("usinit"); exit(-1); } if ((uslock = usnewlock(us)) == NULL) { perror("usnewlock"); exit(-1); } }
/* * This function should be called before using any of sychronization * primitives below. * Return: 1 = success, 0 = error; */ int init_sync( void ) { #ifdef HAVE_SGI_SPROC ArenaName = tempnam( "", "LOCK" ); if (!ArenaName) { fprintf(stderr,"Unable to allocate arena.\n"); return 0; } /* * Increase CONF_INITUSERS to 20 to avoid the error: * New process pid 20029 could not join I/O arena:No space left on device * Need to raise CONF_INITUSERS? (usconfig(3P)) */ usconfig( CONF_INITUSERS, 20 ); /* * This options causes the temporary lock file to be unlinked automatically. */ usconfig( CONF_ARENATYPE, US_SHAREDONLY ); /* * Initialize the shared arena */ Arena = usinit(ArenaName); if (!Arena) { fprintf(stderr,"Unable to allocate arena.\n"); return 0; } #endif ALLOC_LOCK( RWlock ); return 1; }
void vrlib_shmem_init (size_t size) { CAVESetOption (CAVE_SHMEM_SIZE, size); CAVEConfigure (NULL, NULL, NULL); usconfig (CONF_INITSIZE, 1 << 33); usconfig (CONF_ARENATYPE, US_SHAREDONLY); usconfig (CONF_INITUSERS, 10); return; }
bool ThreadManager::init(void) { bool returnValue = true; FDEBUG(("OSGThreadManager init\n")) #if defined(OSG_USE_SPROC) usconfig(CONF_AUTOGROW, 1); usconfig(CONF_INITUSERS, 20); usconfig(CONF_INITSIZE, 10 * 1048576); usconfig(CONF_CHMOD, 0666); _pArena = usinit("/dev/zero"); if(_pArena == NULL) { SFATAL << "OSGTM : could not initialize arena " << errno << std::endl; returnValue = false; } else { SINFO << "OSGTM : got arena " << _pArena << std::endl; } #endif _storePLock = _sLockStore.getMPField("OSGTMStoreLock", "OSGLock", true); if(_storePLock == NULL) { SFATAL << "OSGTM : could not get table lock" << std::endl; returnValue = false; } else { SINFO << "OSGTM : got table lock " << _storePLock << std::endl; } if(_szAppThreadType == NULL) { FINFO(("OSGTM : create -OSGBaseThread- app thread\n")); _pAppThread = getThread("OSGAppThread", true, "OSGBaseThread"); } else { FINFO(("OSGTM : create -%s- app thread\n", _szAppThreadType)); _pAppThread = getThread("OSGAppThread", true, _szAppThreadType); } FFASSERT((_pAppThread != NULL), 1, ("OSGTM : could not get application thread \n"););
void ThreadSetDefault (void) { if (numthreads == -1) numthreads = prctl(PR_MAXPPROCS); Sys_Printf ("%i threads\n", numthreads); usconfig (CONF_INITUSERS, numthreads); }
//=========================================================================== // // Parameter: - // Returns: - // Changes Globals: - //=========================================================================== void ThreadSetDefault (void) { if (numthreads == -1) numthreads = prctl(PR_MAXPPROCS); printf ("%i threads\n", numthreads); //@@ usconfig (CONF_INITUSERS, numthreads); } //end of the function ThreadSetDefault
void stream_init( void ) { #ifdef HIDDEN /* REFERENCED */ intgen_t rval; rval = ( intgen_t )usconfig( CONF_INITUSERS, PROCMAX ); ASSERT( rval >= 0 ); #endif /* HIDDEN */ ( void )memset( ( void * )spm, 0, sizeof( spm )); }
void thread_setup(void) { int i; char filename[20]; sgx_strcpy(filename, "/tmp/mttest.XXXXXX"); mktemp(filename); usconfig(CONF_STHREADIOOFF); usconfig(CONF_STHREADMALLOCOFF); usconfig(CONF_INITUSERS, 100); usconfig(CONF_LOCKTYPE, US_DEBUGPLUS); arena = usinit(filename); unlink(filename); lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(usema_t *)); for (i = 0; i < CRYPTO_num_locks(); i++) { lock_cs[i] = usnewsema(arena, 1); } CRYPTO_set_id_callback((unsigned long (*)())irix_thread_id); CRYPTO_set_locking_callback((void (*)())irix_locking_callback); }
void XMLPlatformUtils::platformInit() { // // The atomicOps mutex needs to be created early. // Normally, mutexes are created on first use, but there is a // circular dependency between compareAndExchange() and // mutex creation that must be broken. // need a shared memory space usconfig(CONF_INITUSERS, 128); usconfig(CONF_INITSIZE, 16000); usconfig(CONF_AUTOGROW, 1); // Default, but we set anyway arenaName = strdup ("/var/tmp/xerces-sharedmemXXXXXX"); arena = usinit (mktemp (arenaName)); if(!atomicOpsMutex) { atomicOpsMutex = new (fgMemoryManager) XMLMutex(fgMemoryManager); if (atomicOpsMutex->fHandle == 0) atomicOpsMutex->fHandle = XMLPlatformUtils::makeMutex(fgMemoryManager); } }
void InitThreads (int wantthreads, size_t needstack) { if (needstack != 0) stacksiz = needstack; else stacksiz = DEFAULT_STACKSIZ; numthreads = wantthreads; if (numthreads < 0) numthreads = prctl(PR_MAXPPROCS); if (numthreads < 1) numthreads = 1; if (numthreads > MAX_THREADS) numthreads = MAX_THREADS; printf ("Setup for %d threads, 0x%x stack size\n", numthreads, (unsigned int)stacksiz); if (numthreads <= 1) return; usconfig (CONF_INITUSERS, numthreads); }
bool_t qlock_init( bool_t miniroot ) { #ifdef HIDDEN char arenaname[ 100 ]; /* REFERENCED */ intgen_t nwritten; intgen_t rval; #endif /* sanity checks */ ASSERT( ! qlock_inited ); /* initially no threads checked in */ qlock_thrdcnt = 0; /* initially no ordinals allocated */ qlock_ordalloced = 0; /* if miniroot, fake it */ if ( miniroot ) { qlock_inited = BOOL_TRUE; qlock_usp = 0; return BOOL_TRUE; } #ifdef HIDDEN /* generate the arena name */ nwritten = sprintf( arenaname, "/tmp/%s.%d", qlock_arenaroot, get_pid() ); ASSERT( nwritten > 0 ); ASSERT( ( size_t )nwritten < sizeof( arenaname )); /* configure shared arenas to automatically unlink on last close */ rval = usconfig( CONF_ARENATYPE, ( u_intgen_t )US_SHAREDONLY ); if ( rval ) { mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, _("unable to configure shared arena for auto unlink: %s\n"), strerror( errno )); return BOOL_FALSE; } /* allocate a shared arena for the locks */ qlock_usp = usinit( arenaname ); if ( ! qlock_usp ) { mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, _("unable to allocate shared arena for thread locks: %s\n"), strerror( errno )); return BOOL_FALSE; } /* now say we are initialized */ qlock_inited = BOOL_TRUE; /* add the parent thread to the thread list */ if ( ! qlock_thrdinit( )) { qlock_inited = BOOL_FALSE; return BOOL_FALSE; } #endif /* HIDDEN */ return BOOL_TRUE; }
int main ( int argc, char **argv ) { //FILE *testarena; char tempstr[256]; setDefaultLogName("rapicDS.log"); RapicStartedTime = time(0); mainpid = getpid(); sprintf(arenaname,"%s.arena",argv[0]); sprintf(Title,"%s %s",argv[0], versionStr()); sprintf(tempstr,"%s - Starting as pid %d\n",Title, mainpid); RapicLog(tempstr, LOG_WARNING); init_signals(); if (FileExists("rapicquitflag", true, true)) { sprintf(tempstr,"%s - Warning - rapicquitflag detected on startup, deleting",Title); RapicLog(tempstr, LOG_WARNING); } #ifdef THREAD_SPROC usptr_t *arena = 0; if (testarena = fopen(arenaname,"r")) { fprintf(stderr,"WARNING - IRIX ARENA ALREADY EXISTS - %s\n",arenaname); // fprintf(stderr,"FATAL ERROR - 3D Rapic CANNOT RUN"); // exit(-1); } else fclose(testarena); int ret; if (ret = usconfig(CONF_INITSIZE,256000)) { perror("usconfig(CONF_INITSIZE)"); }; if (ret = usconfig(CONF_LOCKTYPE,US_DEBUGPLUS)) { perror("usconfig(CONF_LOCKTYPE)"); }; // usconfig(CONF_LOCKTYPE,US_DEBUG); // usconfig(CONF_LOCKTYPE,US_NODEBUG); if (ret = usconfig(CONF_ARENATYPE,US_SHAREDONLY)) { perror("usconfig(CONF_ARENATYPE)"); }; if (ret = usconfig(CONF_INITUSERS,150)) { perror("usconfig(CONF_INITUSERS)"); }; // usconfig(CONF_STHREADIOOFF); if (!(arena = usinit(arenaname))) { fprintf(stderr,"usinit(%s) - FAILED ", arenaname); perror(0); fprintf(stderr,"FATAL ERROR - %s CANNOT RUN", argv[0]); exit(-1); } #endif GetSiteInfo(DISABLE_COVERAGE_LOAD); FreeListMng = new free_list_mng; ScanMng = new scan_mng; rpdbCacheCopyMode = argFound(argc, argv, "cache_path"); if (InitISAM(10,30,12)) fprintf(stderr,"CTree InitISAM ERROR"); else { DBMngr = new DBMng(!rpdbCacheCopyMode); // don't allow db purge if cache copy mode if (DBMngr) { if (ScanMng) { ScanMng->AddClient(DBMngr); if ((ScanMng->recentCachePeriod > 0) && ScanMng->keepScansInCache) { fprintf(stdout, "Loading last %dmins of data from database into recent scan cache\n", ScanMng->recentCachePeriod); DBMngr->loadInitialSeq(NULL, 1, true); ScanMng->startupLatestTime = ScanMng->mostRecentScanTime(); //latest time from db on startup ScanMng->PrintScanUsage(stdout, true); } } } } CommMngr = new RPCommMng; if (FileExists(defaultreplayinifile)) { if (ReplayMngr) { delete ReplayMngr; ReplayMngr = 0; } ReplayMngr = new replay(defaultreplayinifile); } if (FileExists("nexrad.ini")) { NexRadManager = new NexRadMgr(); if (NexRadManager) { NexRadManager->StartNexRadStnHdlrs(); } } if (FileExists("uf.ini")) { ufManager = new ufMgr(); if (ufManager) { ufManager->StartUfStnHdlrs(); } } if (FileExists("fileReaders.ini")) initGlobalFileReaderMng(argv[0], "fileReaders.ini"); check_rpdbCacheCopyMode(argc, argv); if (DBMngr && DBMngr->rpdbCache && cacheCopyReq) { if (rpdbCacheStatsMode) { DBMngr->rpdbCache->dumpCacheContents("rpdb_cache_contents.txt"); DBMngr->rpdbCache->dumpStats(*cacheCopyReq, "cache_stats.txt"); } else if (rpdbCacheCopyMode) { DBMngr->rpdbCache->dumpCacheContents("rpdb_cache_contents.txt"); DBMngr->rpdbCache->copyDB(*cacheCopyReq); } } while (!quitRapicConvert && !rpdbCacheCopyMode) { timenow = time(0); if (CommMngr) { if (time(0) >= NextCommPollTime) { CommMngr->CheckComms(); NextCommPollTime = timenow + CommPollPeriod; } } if (DBMngr && (timenow > DBMngr->DBCheckTime)) { if (DBMngr->CheckScans()) // false if scan check not yet complete DBMngr->DBCheckTime = timenow + DBMngr->DBCheckPeriod; } if (ReplayMngr && (timenow > ReplayCheckTime)) { ReplayMngr->check_replay(); ReplayCheckTime = timenow + time_t(float(ReplayCheckPeriod)/ReplayMngr->getTimeScale()); } if (ScanMng && (timenow > ScanMng->CheckTime)) ScanMng->Check(); if (reqMemCheck || (MemoryStatusDumpTime <= timenow) || FileExists("memdump.flag", 1, 1)) { AppendMemoryStatus(); MemoryStatusDumpTime = time(0) + MemoryStatusDumpPeriod; reqMemCheck = false; } sec_delay(0.5); if (FileExists("rapicquitflag", true, false)) { quitRapicConvert = true; fprintf(stdout,"%s - Detected rapicquitflag - Shutting down - pid %d",Title, mainpid); } } fprintf(stdout,"%s - Shutting down - pid %d",Title, mainpid); if (CommMngr) { delete CommMngr; CommMngr = 0; } if (ufManager) { delete ufManager; ufManager = 0; } if (NexRadManager) { delete NexRadManager; NexRadManager = 0; } if (DBMngr) { delete DBMngr; DBMngr = 0; } if (ScanMng) { delete ScanMng; ScanMng = 0; } if (ReplayMngr) { delete ReplayMngr; ReplayMngr = 0; } closeGlobalFileReaderMng(); if (FileExists("rapicquitflag", true, true)) { fprintf(stdout,"%s - Shut down complete - pid %d - Removing rapicquitflag",Title, mainpid); } return 0; }
TVeosErr ShMem_Init() { TVeosErr iErr; boolean bTrap; str255 sSave; iErr = VEOS_SUCCESS; #ifdef _SG_ usconfig(CONF_INITSIZE, SHMEM_SHARED_BUF_SIZE); iErr = SHMEM_INIT_ERR; SHMEM_ARENA = usinit(SHMEM_ARENA_FILE); CATCH_TRAP(SIGBUS, bTrap); if (bTrap || (SHMEM_ARENA == nil)) { strcpy(sSave, "/bin/rm/ -f "); strcat(sSave, SHMEM_ARENA_FILE); system(sSave); SHMEM_ARENA = usinit(SHMEM_ARENA_FILE); } if (TALK_BUGS) fprintf(stderr, "talk %s: attaching to shared memory arena %s\n", WHOAMI, SHMEM_ARENA ? "was successful" : "failed"); if (SHMEM_ARENA) { SHMEM_DOMAIN = usgetinfo(SHMEM_ARENA); if (TALK_BUGS) fprintf(stderr, "talk %s: veos communication domain %s\n", WHOAMI, SHMEM_DOMAIN ? "found" : "not found, creating one..."); if (SHMEM_DOMAIN == nil) { /** first entity on this machine, ** initialize the shmem domain **/ chmod(SHMEM_ARENA_FILE, 0777); iErr = VEOS_MEM_ERR; SHMEM_DOMAIN = usmalloc(sizeof(TShDomainRec), SHMEM_ARENA); if (SHMEM_DOMAIN) { SHMEM_DOMAIN->pChainSem = usnewsema(SHMEM_ARENA, 1); SHMEM_DOMAIN->pChannelChain = nil; usputinfo(SHMEM_ARENA, SHMEM_DOMAIN); } } if (SHMEM_DOMAIN) { if (TALK_BUGS) fprintf(stderr, "talk %s: creating memory listen channel...\n", WHOAMI); iErr = VEOS_MEM_ERR; SHMEM_CHANNEL = usmalloc(sizeof(TSharedRec), SHMEM_ARENA); if (SHMEM_CHANNEL) { SHMEM_CHANNEL->iPort = IDENT_ADDR.iPort; SHMEM_CHANNEL->pSem = usnewsema(SHMEM_ARENA, 1); SHMEM_CHANNEL->pAvail = &SHMEM_CHANNEL->pBuffer[0]; SHMEM_CHANNEL->pEnd = &SHMEM_CHANNEL->pBuffer[0] + SHMEM_RW_BUF_SIZE; /** link new entity channel into shared domain record **/ uspsema(SHMEM_DOMAIN->pChainSem); SHMEM_CHANNEL->pNext = SHMEM_DOMAIN->pChannelChain; SHMEM_DOMAIN->pChannelChain = SHMEM_CHANNEL; usvsema(SHMEM_DOMAIN->pChainSem); iErr = VEOS_SUCCESS; } } } #endif return(iErr); } /* ShMem_Init */