str CMDopenProfilerStream(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc) { (void) cntxt; (void) mb; (void) stk; (void) pc; return openProfilerStream(cntxt->fdout, *getArgReference_int(stk,pc,1)); }
str CMDopenProfilerStream(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc) { (void) cntxt; (void) mb; (void) stk; (void) pc; return openProfilerStream(cntxt->fdout); }
int mal_init(void){ #ifdef NEED_MT_LOCK_INIT MT_lock_init( &mal_contextLock, "mal_contextLock"); MT_lock_init( &mal_namespaceLock, "mal_namespaceLock"); MT_lock_init( &mal_remoteLock, "mal_remoteLock"); MT_lock_init( &mal_profileLock, "mal_profileLock"); MT_lock_init( &mal_copyLock, "mal_copyLock"); MT_lock_init( &mal_delayLock, "mal_delayLock"); #endif /* "/2" is arbitrarily used / chosen, as on systems with * hyper-threading enabled, using all hardware threads rather than * "only" all physical cores does not necessarily yield a linear * performance benefit */ MT_sema_init( &mal_parallelism, (GDKnr_threads > 1 ? GDKnr_threads/2: 1), "mal_parallelism"); tstAligned(); MCinit(); if (mdbInit()) return -1; if (monet_memory == 0) monet_memory = MT_npages() * MT_pagesize(); initNamespace(); initParser(); initHeartbeat(); initResource(); #ifdef HAVE_JSONSTORE startHttpdaemon(); #endif RECYCLEinit(); if( malBootstrap() == 0) return -1; /* set up the profiler if needed, output sent to console */ /* Use the same shortcuts as stethoscope */ if ( mal_trace && *mal_trace) { char *s; setFilterAll(); openProfilerStream(mal_clients[0].fdout); for ( s= mal_trace; *s; s++) switch(*s){ case 'a': activateCounter("aggregate");break; case 'b': activateCounter("rbytes"); activateCounter("wbytes");break; case 'c': activateCounter("cpu");break; case 'e': activateCounter("event");break; case 'f': activateCounter("function");break; case 'i': activateCounter("pc");break; case 'm': activateCounter("memory");break; case 'p': activateCounter("process");break; case 'r': activateCounter("reads");break; case 's': activateCounter("stmt");break; case 't': activateCounter("ticks");break; case 'u': activateCounter("user");break; case 'w': activateCounter("writes");break; case 'y': activateCounter("type");break; case 'D': activateCounter("dot");break; case 'I': activateCounter("thread");break; case 'T': activateCounter("time");break; case 'S': activateCounter("start"); } startProfiling(); } else mal_trace =0; return 0; }