Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
    }
}
Exemplo n.º 3
0
Arquivo: sync.c Projeto: drafnel/Vis5d
/*
 * 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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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"););
Exemplo n.º 6
0
void ThreadSetDefault (void)
{
	if (numthreads == -1)
		numthreads = prctl(PR_MAXPPROCS);
	Sys_Printf ("%i threads\n", numthreads);
	usconfig (CONF_INITUSERS, numthreads);
}
Exemplo n.º 7
0
//===========================================================================
//
// 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
Exemplo n.º 8
0
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 ));

}
Exemplo n.º 9
0
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);
}
Exemplo n.º 10
0
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);
    }
}
Exemplo n.º 11
0
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);
}
Exemplo n.º 12
0
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;
}
Exemplo n.º 13
0
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;
}
Exemplo n.º 14
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 */