static int main_init(int argc, const char *argv[], Source **sp, struct block **lp) { int argi, i; Source *s = NULL; struct block *l; unsigned char restricted_shell, errexit, utf_flag; char *cp; const char *ccp, **wp; struct tbl *vp; struct stat s_stdin; #if !defined(_PATH_DEFPATH) && defined(_CS_PATH) ssize_t k; #endif #ifdef __OS2__ for (i = 0; i < 3; ++i) if (!isatty(i)) setmode(i, O_BINARY); #endif /* do things like getpgrp() et al. */ chvt_reinit(); /* make sure argv[] is sane, for weird OSes */ if (!*argv) { argv = empty_argv; argc = 1; } kshname = argv[0]; /* initialise permanent Area */ ainit(&aperm); /* set up base environment */ env.type = E_NONE; ainit(&env.area); /* set up global l->vars and l->funs */ newblock(); /* Do this first so output routines (eg, errorf, shellf) can work */ initio(); /* determine the basename (without '-' or path) of the executable */ ccp = kshname; goto begin_parse_kshname; while ((i = ccp[argi++])) { if (i == '/') { ccp += argi; begin_parse_kshname: argi = 0; if (*ccp == '-') ++ccp; } } if (!*ccp) ccp = empty_argv[0]; /* * Turn on nohup by default. (AT&T ksh does not have a nohup * option - it always sends the hup). */ Flag(FNOHUP) = 1; /* * Turn on brace expansion by default. AT&T kshs that have * alternation always have it on. */ Flag(FBRACEEXPAND) = 1; /* * Turn on "set -x" inheritance by default. */ Flag(FXTRACEREC) = 1; /* define built-in commands and see if we were called as one */ ktinit(APERM, &builtins, /* currently up to 54 builtins: 75% of 128 = 2^7 */ 7); for (i = 0; mkshbuiltins[i].name != NULL; i++) if (!strcmp(ccp, builtin(mkshbuiltins[i].name, mkshbuiltins[i].func))) Flag(FAS_BUILTIN) = 1; if (!Flag(FAS_BUILTIN)) { /* check for -T option early */ argi = parse_args(argv, OF_FIRSTTIME, NULL); if (argi < 0) return (1); #if defined(MKSH_BINSHPOSIX) || defined(MKSH_BINSHREDUCED) /* are we called as -sh or /bin/sh or so? */ if (!strcmp(ccp, "sh" MKSH_EXE_EXT)) { /* either also turns off braceexpand */ #ifdef MKSH_BINSHPOSIX /* enable better POSIX conformance */ change_flag(FPOSIX, OF_FIRSTTIME, true); #endif #ifdef MKSH_BINSHREDUCED /* enable kludge/compat mode */ change_flag(FSH, OF_FIRSTTIME, true); #endif } #endif } initvar(); initctypes(); inittraps(); coproc_init(); /* set up variable and command dictionaries */ ktinit(APERM, &taliases, 0); ktinit(APERM, &aliases, 0); #ifndef MKSH_NOPWNAM ktinit(APERM, &homedirs, 0); #endif /* define shell keywords */ initkeywords(); init_histvec(); /* initialise tty size before importing environment */ change_winsz(); #ifdef _PATH_DEFPATH def_path = _PATH_DEFPATH; #else #ifdef _CS_PATH if ((k = confstr(_CS_PATH, NULL, 0)) > 0 && confstr(_CS_PATH, cp = alloc(k + 1, APERM), k + 1) == k + 1) def_path = cp; else #endif /* * this is uniform across all OSes unless it * breaks somewhere; don't try to optimise, * e.g. add stuff for Interix or remove /usr * for HURD, because e.g. Debian GNU/HURD is * "keeping a regular /usr"; this is supposed * to be a sane 'basic' default PATH */ def_path = MKSH_UNIXROOT "/bin" MKSH_PATHSEPS MKSH_UNIXROOT "/usr/bin" MKSH_PATHSEPS MKSH_UNIXROOT "/sbin" MKSH_PATHSEPS MKSH_UNIXROOT "/usr/sbin"; #endif /* * Set PATH to def_path (will set the path global variable). * (import of environment below will probably change this setting). */ vp = global("PATH"); /* setstr can't fail here */ setstr(vp, def_path, KSH_RETURN_ERROR); #ifndef MKSH_NO_CMDLINE_EDITING /* * Set edit mode to emacs by default, may be overridden * by the environment or the user. Also, we want tab completion * on in vi by default. */ change_flag(FEMACS, OF_SPECIAL, true); #if !MKSH_S_NOVI Flag(FVITABCOMPLETE) = 1; #endif #endif /* import environment */ if (environ != NULL) { wp = (const char **)environ; while (*wp != NULL) { rndpush(*wp); typeset(*wp, IMPORT | EXPORT, 0, 0, 0); ++wp; } } /* for security */ typeset(initifs, 0, 0, 0, 0); /* assign default shell variable values */ substitute(initsubs, 0); /* Figure out the current working directory and set $PWD */ vp = global("PWD"); cp = str_val(vp); /* Try to use existing $PWD if it is valid */ set_current_wd((mksh_abspath(cp) && test_eval(NULL, TO_FILEQ, cp, ".", true)) ? cp : NULL); if (current_wd[0]) simplify_path(current_wd); /* Only set pwd if we know where we are or if it had a bogus value */ if (current_wd[0] || *cp) /* setstr can't fail here */ setstr(vp, current_wd, KSH_RETURN_ERROR); for (wp = initcoms; *wp != NULL; wp++) { shcomexec(wp); while (*wp != NULL) wp++; } setint_n(global("OPTIND"), 1, 10); kshuid = getuid(); kshgid = getgid(); kshegid = getegid(); safe_prompt = ksheuid ? "$ " : "# "; vp = global("PS1"); /* Set PS1 if unset or we are root and prompt doesn't contain a # */ if (!(vp->flag & ISSET) || (!ksheuid && !strchr(str_val(vp), '#'))) /* setstr can't fail here */ setstr(vp, safe_prompt, KSH_RETURN_ERROR); setint_n((vp = global("BASHPID")), 0, 10); vp->flag |= INT_U; setint_n((vp = global("PGRP")), (mksh_uari_t)kshpgrp, 10); vp->flag |= INT_U; setint_n((vp = global("PPID")), (mksh_uari_t)kshppid, 10); vp->flag |= INT_U; setint_n((vp = global("USER_ID")), (mksh_uari_t)ksheuid, 10); vp->flag |= INT_U; setint_n((vp = global("KSHUID")), (mksh_uari_t)kshuid, 10); vp->flag |= INT_U; setint_n((vp = global("KSHEGID")), (mksh_uari_t)kshegid, 10); vp->flag |= INT_U; setint_n((vp = global("KSHGID")), (mksh_uari_t)kshgid, 10); vp->flag |= INT_U; setint_n((vp = global("RANDOM")), rndsetup(), 10); vp->flag |= INT_U; setint_n((vp_pipest = global("PIPESTATUS")), 0, 10); /* Set this before parsing arguments */ Flag(FPRIVILEGED) = (kshuid != ksheuid || kshgid != kshegid) ? 2 : 0; /* this to note if monitor is set on command line (see below) */ #ifndef MKSH_UNEMPLOYED Flag(FMONITOR) = 127; #endif /* this to note if utf-8 mode is set on command line (see below) */ UTFMODE = 2; if (!Flag(FAS_BUILTIN)) { argi = parse_args(argv, OF_CMDLINE, NULL); if (argi < 0) return (1); } /* process this later only, default to off (hysterical raisins) */ utf_flag = UTFMODE; UTFMODE = 0; if (Flag(FAS_BUILTIN)) { /* auto-detect from environment variables, always */ utf_flag = 3; } else if (Flag(FCOMMAND)) { s = pushs(SSTRINGCMDLINE, ATEMP); if (!(s->start = s->str = argv[argi++])) errorf("%s %s", "-c", "requires an argument"); while (*s->str) { if (*s->str != ' ' && ctype(*s->str, C_QUOTE)) break; s->str++; } if (!*s->str) s->flags |= SF_MAYEXEC; s->str = s->start; #ifdef MKSH_MIDNIGHTBSD01ASH_COMPAT /* compatibility to MidnightBSD 0.1 /bin/sh (kludge) */ if (Flag(FSH) && argv[argi] && !strcmp(argv[argi], "--")) ++argi; #endif if (argv[argi]) kshname = argv[argi++]; } else if (argi < argc && !Flag(FSTDIN)) { s = pushs(SFILE, ATEMP); #ifdef __OS2__ /* * A bug in OS/2 extproc (like shebang) handling makes * it not pass the full pathname of a script, so we need * to search for it. This changes the behaviour of a * simple "mksh foo", but can't be helped. */ s->file = search_path(argv[argi++], path, X_OK, NULL); if (!s->file || !*s->file) s->file = argv[argi - 1]; #else s->file = argv[argi++]; #endif s->u.shf = shf_open(s->file, O_RDONLY, 0, SHF_MAPHI | SHF_CLEXEC); if (s->u.shf == NULL) { shl_stdout_ok = false; warningf(true, "%s: %s", s->file, cstrerror(errno)); /* mandated by SUSv4 */ exstat = 127; unwind(LERROR); } kshname = s->file; } else { Flag(FSTDIN) = 1; s = pushs(SSTDIN, ATEMP); s->file = "<stdin>"; s->u.shf = shf_fdopen(0, SHF_RD | can_seek(0), NULL); if (isatty(0) && isatty(2)) { Flag(FTALKING) = Flag(FTALKING_I) = 1; /* The following only if isatty(0) */ s->flags |= SF_TTY; s->u.shf->flags |= SHF_INTERRUPT; s->file = NULL; } } /* this bizarreness is mandated by POSIX */ if (fstat(0, &s_stdin) >= 0 && S_ISCHR(s_stdin.st_mode) && Flag(FTALKING)) reset_nonblock(0); /* initialise job control */ j_init(); /* do this after j_init() which calls tty_init_state() */ if (Flag(FTALKING)) { if (utf_flag == 2) { #ifndef MKSH_ASSUME_UTF8 /* auto-detect from locale or environment */ utf_flag = 4; #else /* this may not be an #elif */ #if MKSH_ASSUME_UTF8 utf_flag = 1; #else /* always disable UTF-8 (for interactive) */ utf_flag = 0; #endif #endif } #ifndef MKSH_NO_CMDLINE_EDITING x_init(); #endif } #ifdef SIGWINCH sigtraps[SIGWINCH].flags |= TF_SHELL_USES; setsig(&sigtraps[SIGWINCH], x_sigwinch, SS_RESTORE_ORIG|SS_FORCE|SS_SHTRAP); #endif l = e->loc; if (Flag(FAS_BUILTIN)) { l->argc = argc; l->argv = argv; l->argv[0] = ccp; } else { l->argc = argc - argi; /* * allocate a new array because otherwise, when we modify * it in-place, ps(1) output changes; the meaning of argc * here is slightly different as it excludes kshname, and * we add a trailing NULL sentinel as well */ l->argv = alloc2(l->argc + 2, sizeof(void *), APERM); l->argv[0] = kshname; memcpy(&l->argv[1], &argv[argi], l->argc * sizeof(void *)); l->argv[l->argc + 1] = NULL; getopts_reset(1); } /* divine the initial state of the utf8-mode Flag */ ccp = null; switch (utf_flag) { /* auto-detect from locale or environment */ case 4: #if HAVE_SETLOCALE_CTYPE ccp = setlocale(LC_CTYPE, ""); #if HAVE_LANGINFO_CODESET if (!isuc(ccp)) ccp = nl_langinfo(CODESET); #endif if (!isuc(ccp)) ccp = null; /* FALLTHROUGH */ #endif /* auto-detect from environment */ case 3: /* these were imported from environ earlier */ if (ccp == null) ccp = str_val(global("LC_ALL")); if (ccp == null) ccp = str_val(global("LC_CTYPE")); if (ccp == null) ccp = str_val(global("LANG")); UTFMODE = isuc(ccp); break; /* not set on command line, not FTALKING */ case 2: /* unknown values */ default: utf_flag = 0; /* FALLTHROUGH */ /* known values */ case 1: case 0: UTFMODE = utf_flag; break; } /* Disable during .profile/ENV reading */ restricted_shell = Flag(FRESTRICTED); Flag(FRESTRICTED) = 0; errexit = Flag(FERREXIT); Flag(FERREXIT) = 0; /* * Do this before profile/$ENV so that if it causes problems in them, * user will know why things broke. */ if (!current_wd[0] && Flag(FTALKING)) warningf(false, "can't determine current directory"); if (Flag(FLOGIN)) include(MKSH_SYSTEM_PROFILE, 0, NULL, true); if (!Flag(FPRIVILEGED)) { if (Flag(FLOGIN)) include(substitute("$HOME/.profile", 0), 0, NULL, true); if (Flag(FTALKING)) { cp = substitute(substitute("${ENV:-" MKSHRC_PATH "}", 0), DOTILDE); if (cp[0] != '\0') include(cp, 0, NULL, true); } } else { include(MKSH_SUID_PROFILE, 0, NULL, true); /* turn off -p if not set explicitly */ if (Flag(FPRIVILEGED) != 1) change_flag(FPRIVILEGED, OF_INTERNAL, false); } if (restricted_shell) { shcomexec(restr_com); /* After typeset command... */ Flag(FRESTRICTED) = 1; } Flag(FERREXIT) = errexit; if (Flag(FTALKING) && s) hist_init(s); else /* set after ENV */ Flag(FTRACKALL) = 1; alarm_init(); *sp = s; *lp = l; return (0); }
/** * Expanze vrcholu zasobniku. * \returns pocet stavu na ktere byl vrchol zasobniku expandovan */ int expand() { assert(t); assert(s); stack_item_t *it; coords_t c; // souradnice zdrojoveho policka posledniho tahu move_t m; // tah unsigned int i; int dir; stack_item_t its; // novy stav (vznikly expanzi) srpdebug("core", node, "expanze <zacatek>"); // vyndani uzlu ze zasobniku it = stack_pop(s); assert(it); assert(it->B); assert(it->h); cc++; // kontroly smysluplnosti expanze // vzhledem k napocitane penalizaci nemusi mit smysl dale pokracovat // protoze nemame zaporne penalizace. Takove vetve lze oriznout. //if(solution != NULL) { if(mpi_best_p > 0 && it->p >= mpi_best_p) { srpdebug("core", node, "expanze <orez, p=%d je horsi nez " "nejlepsi p=%d>", it->p, mpi_best_p); stack_item_destroy(it); co++; return; } // maximalni hloubka stavoveho stromu // FIXME zeptat se p.Simecka jestli je tohle legalni if(it->d == t->q) { srpdebug("core", node, "expanze <dosazena max. hloubka stav. " "prostoru q=%d>", t->q); stack_item_destroy(it); co++; return; } c = hist_lookup_move(it->h, FROM, 1 /* posledni tah */); // pridat na zasobnik vsechny mozne tahy z tohoto stavu for(i = 0; i < t->k; i++) { //assert(it->B[i]); // zkusit vsechny smery tahu for(dir = RUU /* 1 */; dir <= LLD /* 8 */; dir++) { if(task_move(t, it->B, i, dir, &m, NULL, 1) == 1) { // tah se zdari, vyloucime tah zpet if(m[TO].x == c.x && m[TO].y == c.y) continue; // ulozit tah jako novy stav na zasobnik its.d = it->d + 1; its.p = it->p; its.h = hist_init(it->h); its.B = task_bdcpy(t, it->B); task_move(t, its.B, i, dir, &m, &its.p, 0); hist_append_move(its.h, m); stack_push(s, its); } } } srpdebug("core", node, "expanze <konec>"); stack_item_destroy(it); return 0; }
int main( int argc, char *argv[] ) { int i, k, t_num, arg_offset, c; long j; float f; pthread_t *t; thread_arg *thd_arg; timer_t timer; struct itimerval itval; struct sigaction sigact; int port= 3306; int fd, seed; printf("***************************************\n"); printf("*** ###easy### TPC-C Load Generator ***\n"); printf("***************************************\n"); /* initialize */ hist_init(); activate_transaction = 1; counting_on = 0; for ( i=0; i<5; i++ ){ success[i]=0; late[i]=0; retry[i]=0; failure[i]=0; prev_s[i]=0; prev_l[i]=0; max_rt[i]=0.0; } /* dummy initialize*/ num_ware = 1; num_conn = 10; lampup_time = 10; measure_time = 20; strcpy( db_string, "tpcc" ); /* number of node (default 0) */ num_node = 0; arg_offset = 0; clk_tck = sysconf(_SC_CLK_TCK); /* Parse args */ while ( (c = getopt(argc, argv, "h:P:d:u:p:w:c:r:l:i:f:")) != -1) { switch (c) { case 'h': printf ("option h with value '%s'\n", optarg); strncpy(connect_string, optarg, DB_STRING_MAX); break; case 'd': printf ("option d with value '%s'\n", optarg); strncpy(db_string, optarg, DB_STRING_MAX); break; case 'u': printf ("option u with value '%s'\n", optarg); strncpy(db_user, optarg, DB_STRING_MAX); break; case 'p': printf ("option p with value '%s'\n", optarg); strncpy(db_password, optarg, DB_STRING_MAX); break; case 'f': printf ("option f with value '%s'\n", optarg); strncpy(report_file, optarg, DB_STRING_MAX); break; case 'w': printf ("option w with value '%s'\n", optarg); num_ware = atoi(optarg); break; case 'c': printf ("option c with value '%s'\n", optarg); num_conn = atoi(optarg); break; case 'r': printf ("option r with value '%s'\n", optarg); lampup_time = atoi(optarg); break; case 'l': printf ("option l with value '%s'\n", optarg); measure_time = atoi(optarg); break; case 'i': printf ("option i with value '%s'\n", optarg); PRINT_INTERVAL = atoi(optarg); break; case 'P': printf ("option P with value '%s'\n", optarg); port = atoi(optarg); break; case '?': printf("Usage: tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file\n"); exit(0); default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } /* if ((num_node == 0)&&(argc == 14)) { valuable_flg = 1; } if ((num_node == 0)&&(valuable_flg == 0)&&(argc != 9)) { fprintf(stderr, "\n usage: tpcc_start [server] [DB] [user] [pass] [warehouse] [connection] [rampup] [measure]\n"); exit(1); } if ( strlen(argv[1]) >= DB_STRING_MAX ) { fprintf(stderr, "\n server phrase is too long\n"); exit(1); } if ( strlen(argv[2]) >= DB_STRING_MAX ) { fprintf(stderr, "\n DBname phrase is too long\n"); exit(1); } if ( strlen(argv[3]) >= DB_STRING_MAX ) { fprintf(stderr, "\n user phrase is too long\n"); exit(1); } if ( strlen(argv[4]) >= DB_STRING_MAX ) { fprintf(stderr, "\n pass phrase is too long\n"); exit(1); } if ((num_ware = atoi(argv[5 + arg_offset])) <= 0) { fprintf(stderr, "\n expecting positive number of warehouses\n"); exit(1); } if ((num_conn = atoi(argv[6 + arg_offset])) <= 0) { fprintf(stderr, "\n expecting positive number of connections\n"); exit(1); } if ((lampup_time = atoi(argv[7 + arg_offset])) < 0) { fprintf(stderr, "\n expecting positive number of lampup_time [sec]\n"); exit(1); } if ((measure_time = atoi(argv[8 + arg_offset])) < 0) { fprintf(stderr, "\n expecting positive number of measure_time [sec]\n"); exit(1); } if (parse_host_get_port(&port, argv[1]) < 0) { fprintf(stderr, "cannot prase the host: %s\n", argv[1]); exit(1); } strcpy( db_string, argv[2] ); strcpy( db_user, argv[3] ); strcpy( db_password, argv[4] ); */ if(strcmp(db_string,"l")==0){ is_local = 1; }else{ is_local = 0; } if(valuable_flg==1){ if( (atoi(argv[9 + arg_offset]) < 0)||(atoi(argv[10 + arg_offset]) < 0)||(atoi(argv[11 + arg_offset]) < 0) ||(atoi(argv[12 + arg_offset]) < 0)||(atoi(argv[13 + arg_offset]) < 0) ) { fprintf(stderr, "\n expecting positive number of ratio parameters\n"); exit(1); } } if( num_node > 0 ){ if( num_ware % num_node != 0 ){ fprintf(stderr, "\n [warehouse] value must be devided by [num_node].\n"); exit(1); } if( num_conn % num_node != 0 ){ fprintf(stderr, "\n [connection] value must be devided by [num_node].\n"); exit(1); } } if ( strlen(report_file) > 0 ) { freport_file=fopen(report_file,"w+"); } printf("<Parameters>\n"); if(is_local==0) { printf(" [server]: "); printf("%s", connect_string); printf("\n"); } if(is_local==0)printf(" [port]: %d\n", port); printf(" [DBname]: %s\n", db_string); printf(" [user]: %s\n", db_user); printf(" [pass]: %s\n", db_password); printf(" [warehouse]: %d\n", num_ware); printf(" [connection]: %d\n", num_conn); printf(" [rampup]: %d (sec.)\n", lampup_time); printf(" [measure]: %d (sec.)\n", measure_time); if(valuable_flg==1){ printf(" [ratio]: %d:%d:%d:%d:%d\n", atoi(argv[9 + arg_offset]), atoi(argv[10 + arg_offset]), atoi(argv[11 + arg_offset]), atoi(argv[12 + arg_offset]), atoi(argv[13 + arg_offset]) ); } /* alarm initialize */ time_count = 0; itval.it_interval.tv_sec = PRINT_INTERVAL; itval.it_interval.tv_usec = 0; itval.it_value.tv_sec = PRINT_INTERVAL; itval.it_value.tv_usec = 0; sigact.sa_handler = alarm_handler; sigact.sa_flags = 0; sigemptyset(&sigact.sa_mask); /* setup handler&timer */ if( sigaction( SIGALRM, &sigact, NULL ) == -1 ) { fprintf(stderr, "error in sigaction()\n"); exit(1); } fd = open("/dev/urandom", O_RDONLY); if (fd == -1) { fd = open("/dev/random", O_RDONLY); if (fd == -1) { struct timeval tv; gettimeofday(&tv, NULL); seed = (tv.tv_sec ^ tv.tv_usec) * tv.tv_sec * tv.tv_usec ^ tv.tv_sec; }else{ read(fd, &seed, sizeof(seed)); close(fd); } }else{ read(fd, &seed, sizeof(seed)); close(fd); } SetSeed(seed); if(valuable_flg==0){ seq_init(10,10,1,1,1); /* normal ratio */ }else{ seq_init( atoi(argv[9 + arg_offset]), atoi(argv[10 + arg_offset]), atoi(argv[11 + arg_offset]), atoi(argv[12 + arg_offset]), atoi(argv[13 + arg_offset]) ); } /* set up each counter */ for ( i=0; i<5; i++ ){ success2[i] = malloc( sizeof(int) * num_conn ); late2[i] = malloc( sizeof(int) * num_conn ); retry2[i] = malloc( sizeof(int) * num_conn ); failure2[i] = malloc( sizeof(int) * num_conn ); for ( k=0; k<num_conn; k++ ){ success2[i][k] = 0; late2[i][k] = 0; retry2[i][k] = 0; failure2[i][k] = 0; } } /* set up threads */ t = malloc( sizeof(pthread_t) * num_conn ); if ( t == NULL ){ fprintf(stderr, "error at malloc(pthread_t)\n"); exit(1); } thd_arg = malloc( sizeof(thread_arg) * num_conn ); if( thd_arg == NULL ){ fprintf(stderr, "error at malloc(thread_arg)\n"); exit(1); } ctx = malloc( sizeof(MYSQL *) * num_conn ); stmt = malloc( sizeof(MYSQL_STMT **) * num_conn ); for( i=0; i < num_conn; i++ ){ stmt[i] = malloc( sizeof(MYSQL_STMT *) * 40 ); } if ( ctx == NULL ){ fprintf(stderr, "error at malloc(sql_context)\n"); exit(1); } /* EXEC SQL WHENEVER SQLERROR GOTO sqlerr; */ for( i=0; i < num_conn; i++ ){ ctx[i] = mysql_init(NULL); if(!ctx[i]) goto sqlerr; } for( t_num=0; t_num < num_conn; t_num++ ){ thd_arg[t_num].port= port; thd_arg[t_num].number= t_num; pthread_create( &t[t_num], NULL, (void *)thread_main, (void *)&(thd_arg[t_num]) ); } printf("\nRAMP-UP TIME.(%d sec.)\n",lampup_time); fflush(stdout); sleep(lampup_time); printf("\nMEASURING START.\n\n"); fflush(stdout); /* sleep(measure_time); */ /* start timer */ #ifndef _SLEEP_ONLY_ if( setitimer(ITIMER_REAL, &itval, NULL) == -1 ) { fprintf(stderr, "error in setitimer()\n"); } #endif counting_on = 1; /* wait signal */ for(i = 0; i < (measure_time / PRINT_INTERVAL); i++ ) { #ifndef _SLEEP_ONLY_ pause(); #else sleep(PRINT_INTERVAL); alarm_dummy(); #endif } counting_on = 0; #ifndef _SLEEP_ONLY_ /* stop timer */ itval.it_interval.tv_sec = 0; itval.it_interval.tv_usec = 0; itval.it_value.tv_sec = 0; itval.it_value.tv_usec = 0; if( setitimer(ITIMER_REAL, &itval, NULL) == -1 ) { fprintf(stderr, "error in setitimer()\n"); } #endif printf("\nSTOPPING THREADS"); activate_transaction = 0; /* wait threads' ending and close connections*/ for( i=0; i < num_conn; i++ ){ pthread_join( t[i], NULL ); } printf("\n"); free(ctx); for( i=0; i < num_conn; i++ ){ free(stmt[i]); } free(stmt); free(t); free(thd_arg); //hist_report(); if (freport_file != NULL) fclose(freport_file); printf("\n<Raw Results>\n"); for ( i=0; i<5; i++ ){ printf(" [%d] sc:%d lt:%d rt:%d fl:%d \n", i, success[i], late[i], retry[i], failure[i]); } printf(" in %d sec.\n", (measure_time / PRINT_INTERVAL) * PRINT_INTERVAL); printf("\n<Raw Results2(sum ver.)>\n"); for( i=0; i<5; i++ ){ success2_sum[i] = 0; late2_sum[i] = 0; retry2_sum[i] = 0; failure2_sum[i] = 0; for( k=0; k<num_conn; k++ ){ success2_sum[i] += success2[i][k]; late2_sum[i] += late2[i][k]; retry2_sum[i] += retry2[i][k]; failure2_sum[i] += failure2[i][k]; } } for ( i=0; i<5; i++ ){ printf(" [%d] sc:%d lt:%d rt:%d fl:%d \n", i, success2_sum[i], late2_sum[i], retry2_sum[i], failure2_sum[i]); } printf("\n<Constraint Check> (all must be [OK])\n [transaction percentage]\n"); for ( i=0, j=0; i<5; i++ ){ j += (success[i] + late[i]); } f = 100.0 * (float)(success[1] + late[1])/(float)j; printf(" Payment: %3.2f%% (>=43.0%%)",f); if ( f >= 43.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)(success[2] + late[2])/(float)j; printf(" Order-Status: %3.2f%% (>= 4.0%%)",f); if ( f >= 4.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)(success[3] + late[3])/(float)j; printf(" Delivery: %3.2f%% (>= 4.0%%)",f); if ( f >= 4.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)(success[4] + late[4])/(float)j; printf(" Stock-Level: %3.2f%% (>= 4.0%%)",f); if ( f >= 4.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } printf(" [response time (at least 90%% passed)]\n"); f = 100.0 * (float)success[0]/(float)(success[0] + late[0]); printf(" New-Order: %3.2f%% ",f); if ( f >= 90.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)success[1]/(float)(success[1] + late[1]); printf(" Payment: %3.2f%% ",f); if ( f >= 90.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)success[2]/(float)(success[2] + late[2]); printf(" Order-Status: %3.2f%% ",f); if ( f >= 90.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)success[3]/(float)(success[3] + late[3]); printf(" Delivery: %3.2f%% ",f); if ( f >= 90.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } f = 100.0 * (float)success[4]/(float)(success[4] + late[4]); printf(" Stock-Level: %3.2f%% ",f); if ( f >= 90.0 ){ printf(" [OK]\n"); }else{ printf(" [NG] *\n"); } printf("\n<TpmC>\n"); f = (float)(success[0] + late[0]) * 60.0 / (float)((measure_time / PRINT_INTERVAL) * PRINT_INTERVAL); printf(" %.3f TpmC\n",f); exit(0); sqlerr: fprintf(stdout, "error at main\n"); error(ctx[i],0); exit(1); }
void tonemap(double *im, int N, int M, int K, int nrbins, bool dolog) { double maxy = 0; mxArray *h_m, *H2_m, *x_m, *D_m, *B_m, *c_m, *imgr_m, *h2_m, *x2_m; double *h, *H2, *x, *D, *B, *c, *imgr, *h2, *x2; int nrbins2; imgr_m = mxCreateDoubleMatrix(N,M,mxREAL); imgr = mxGetPr(imgr_m); for (int i = 0;i<N;i++) for (int j = 0;j<M;j++) { im[i+j*N+0*N*M] = std::max(0.0,im[i+j*N+0*N*M]); im[i+j*N+1*N*M] = std::max(0.0,im[i+j*N+1*N*M]); im[i+j*N+2*N*M] = std::max(0.0,im[i+j*N+2*N*M]); if (dolog) { im[i+j*N+0*N*M]=log(1+im[i+j*N+0*N*M]); im[i+j*N+1*N*M]=log(1+im[i+j*N+1*N*M]); im[i+j*N+2*N*M]=log(1+im[i+j*N+2*N*M]); } imgr[i+j*N] = std::max(im[i+j*N+0*N*M],std::max(im[i+j*N+1*N*M],im[i+j*N+2*N*M])); if (imgr[i+j*N]>maxy) maxy = imgr[i+j*N]; } if (nrbins<0) { if (dolog) nrbins = (int) (1+exp(maxy)); else nrbins = (int) (1+maxy); } x_m = mxCreateDoubleMatrix(1,nrbins,mxREAL); h_m = mxCreateDoubleMatrix(1,nrbins,mxREAL); x = mxGetPr(x_m); h = mxGetPr(h_m); nrbins2 = hist_init(x,h,imgr,N,M,nrbins,maxy); if (K<nrbins2) { x2_m = mxCreateDoubleMatrix(1,nrbins2,mxREAL); h2_m = mxCreateDoubleMatrix(1,nrbins2,mxREAL); H2_m = mxCreateDoubleMatrix(1,nrbins2,mxREAL); D_m = mxCreateDoubleMatrix(K,nrbins2,mxREAL); B_m = mxCreateDoubleMatrix(K,nrbins2,mxREAL); c_m = mxCreateDoubleMatrix(1,K,mxREAL); x2 = mxGetPr(x2_m); h2 = mxGetPr(h2_m); H2 = mxGetPr(H2_m); D = mxGetPr(D_m); B = mxGetPr(B_m); c = mxGetPr(c_m); hist(x,h,nrbins,x2,h2,H2); solvedynaprog(D,B,h2,H2,x2,nrbins2,K); backtrack(c,h2,H2,x2,B,nrbins2,K); toneim(im,c,maxy,nrbins,K,N,M); mxDestroyArray(h2_m); mxDestroyArray(H2_m); mxDestroyArray(x2_m); mxDestroyArray(D_m); mxDestroyArray(B_m); mxDestroyArray(c_m); } else toneim(im,x,maxy,nrbins,K,N,M); mxDestroyArray(imgr_m); mxDestroyArray(h_m); mxDestroyArray(x_m); }
void init_config(void) { cfg.show_one_window = 0; cfg.history_len = 15; (void)hist_init(&cfg.cmd_hist, cfg.history_len); (void)hist_init(&cfg.search_hist, cfg.history_len); (void)hist_init(&cfg.prompt_hist, cfg.history_len); (void)hist_init(&cfg.filter_hist, cfg.history_len); cfg.auto_execute = 0; cfg.time_format = strdup(" %m/%d %H:%M"); cfg.wrap_quick_view = 1; cfg.use_iec_prefixes = 0; cfg.undo_levels = 100; cfg.sort_numbers = 0; cfg.follow_links = 1; cfg.fast_run = 0; cfg.confirm = 1; cfg.vi_command = strdup("vim"); cfg.vi_cmd_bg = 0; cfg.vi_x_command = strdup(""); cfg.vi_x_cmd_bg = 0; cfg.use_trash = 1; { char fuse_home[PATH_MAX]; int update_stat; snprintf(fuse_home, sizeof(fuse_home), "%s/vifm_FUSE", get_tmpdir()); update_stat = set_fuse_home(fuse_home); assert(update_stat == 0); } cfg.use_term_multiplexer = 0; cfg.use_vim_help = 0; cfg.wild_menu = 0; cfg.ignore_case = 0; cfg.smart_case = 0; cfg.hl_search = 1; cfg.vifm_info = VIFMINFO_BOOKMARKS; cfg.auto_ch_pos = 1; cfg.timeout_len = 1000; cfg.scroll_off = 0; cfg.gdefault = 0; #ifndef _WIN32 cfg.slow_fs_list = strdup(""); #endif cfg.scroll_bind = 0; cfg.wrap_scan = 1; cfg.inc_search = 0; cfg.selection_is_primary = 1; cfg.tab_switches_pane = 1; cfg.use_system_calls = 0; cfg.last_status = 1; cfg.tab_stop = 8; cfg.ruler_format = strdup("%=%l/%S "); cfg.status_line = strdup(""); cfg.lines = INT_MIN; cfg.columns = INT_MIN; cfg.dot_dirs = DD_NONROOT_PARENT; cfg.trunc_normal_sb_msgs = 0; cfg.filter_inverted_by_default = 1; cfg.apropos_prg = strdup("apropos %a"); cfg.find_prg = strdup("find %s %a -print , " "-type d \\( ! -readable -o ! -executable \\) -prune"); cfg.grep_prg = strdup("grep -n -H -I -r %i %a %s"); cfg.locate_prg = strdup("locate %a"); cfg.cd_path = strdup(env_get_def("CDPATH", DEFAULT_CD_PATH)); replace_char(cfg.cd_path, ':', ','); cfg.filelist_col_padding = 1; cfg.side_borders_visible = 1; cfg.border_filler = strdup(" "); #ifndef _WIN32 copy_str(cfg.log_file, sizeof(cfg.log_file), "/var/log/vifm-startup-log"); #else { char exe_dir[PATH_MAX]; (void)get_exe_dir(exe_dir, sizeof(exe_dir)); snprintf(cfg.log_file, sizeof(cfg.log_file), "%s/startup-log", exe_dir); } #endif cfg_set_shell(env_get_def("SHELL", DEFAULT_SHELL_CMD)); memset(&cfg.decorations, '\0', sizeof(cfg.decorations)); cfg.decorations[DIRECTORY][DECORATION_SUFFIX] = '/'; }