int ckpmon_run(char *arg) { extern lua_State *L; gchar *pmon_input = NULL; char *pmon_buf = NULL; gsize length = 0; GRegex *regex; GMatchInfo *match_info; GError *err = NULL; printPrompt("PMON版本输入格式如下例:\"1.3.6\"\n请输入\n"); // get pmon spec version: pmon_input int len = getTableNumElement(L, "con", "PMONVER_LEN"); pmon_input = getNCharsPrompt("PMON版本条码", len, TRUE); if (pmon_input == NULL) { printPrompt("未输入\n"); return 1; } printPrompt("输入版本号为:"); printMsg(pmon_input); printMsg("\n"); // get pmon env version: pmon_env g_file_get_contents ("/proc/cmdline", &pmon_buf, &length, NULL); regex = g_regex_new (PMON_STR, G_REGEX_NO_AUTO_CAPTURE | G_REGEX_OPTIMIZE | G_REGEX_DUPNAMES, 0, &err); g_regex_match (regex, pmon_buf, 0, &match_info); gchar *pmon_named = g_match_info_fetch_named(match_info, "pmonver"); g_print ("%s\n", pmon_named); // cmp gchar *text_pmon_env = g_strdup_printf("本机的版本号[cmdline]为:%s\n", pmon_named); printPrompt(g_string_chunk_insert_const(text_chunk, text_pmon_env)); g_free(text_pmon_env); if (strcasecmp(pmon_input, (const char *)pmon_named)) { printNG("机器当前PMON版本号与标准不相符!\n"); return 1; } else { printOK("PMON版本号相符。\n"); } g_free(pmon_input); // TODO: here free g_strdup, but have not test g_free (pmon_named); g_match_info_free (match_info); g_regex_unref (regex); return 0; }
int go_burnin_ctl_thread(void *pdata) { extern lua_State *L; extern int burnin_run; extern int burnin_kill; extern int leave; extern int fresh_display; char tmpstr[128]={0}; char *tmp = NULL; int hours = 0; time_t now; FILE *fp = NULL; gettimeofday(&t1, NULL); hours = getTableNumElement(L, "con", "BURNIN_RUN_TIME"); printf("I will burnin for %d hours.\n", hours); system( "mkdir -p /root/logs/"); if ((fp = fopen( "/root/logs/control.txt", "w")) == NULL) { printf("Error when create control.txt\n"); exit(1); } time( &now); sprintf( tmpstr, "start: %s\n", ctime( &now)); printf( " %s \n", tmpstr); fprintf(fp, "%s\n", tmpstr); fflush(fp); fclose(fp); sleep(2); // for test gettimeofday(&t2, NULL); gettimeofday(&t3, NULL); while(1) { gettimeofday(&t2, NULL); if( burnin_kill || (t2.tv_sec - t1.tv_sec)> 60 * hours ) { if ( (t2.tv_sec -t3.tv_sec)/60 >= 10){ t3 = t2; if ((fp = fopen( "/root/logs/control.txt", "a")) == NULL) { printf("Error when create control.txt\n"); exit(1); } time( &now); sprintf( tmpstr, "run : %s\n", ctime( &now)); printf( " %s\n", tmpstr); fprintf(fp, "%s\n", tmpstr); fflush(fp); fclose(fp); } extern int ITEM_NUMBER; int i = 0; char run_file[1024] = {0}; char *path = (char *)getTableElement(L, "con", "PATH"); sprintf( run_file, "%sburnin/control/run.lua",path); // clear the global running flag burnin_kill = 0; burnin_run = 0; fresh_display = 0; SDL_Delay(1000); for (i=0; i < ITEM_NUMBER; i++) { if (threads[i]) { SDL_KillThread(threads[i]); threads[i] = NULL; } } printf("Burnin threads have been killed!\n"); SDL_Delay(500); // control the life time of other thread run(L, run_file); break; } SDL_Delay(5000); } char *pnt = "ALL Items are OK!!"; printCStr( pnt, (W_WIDTH - (strlen(pnt)*8))/2, W_HEIGHT / 2, 0x00008000); printf("Control thread exit!\n"); refreshWin(); SDL_Delay(1000); if ((fp = fopen( "/root/logs/control.txt", "a")) == NULL) { printf("Error when create control.txt\n"); exit(1); } time( &now); sprintf( tmpstr, "end : %s\n", ctime( &now)); printf( " %s\n", tmpstr); fprintf(fp, "%s\n", tmpstr); fflush(fp); fclose(fp); leave = 1; SDL_Delay(30000); refreshWin(); return 0; }
int go_burnin_thread(void *pdata) { extern lua_State *L; extern char *radios[]; extern int burnin_run; FR_THD_PARG *data = (FR_THD_PARG *)pdata; int r; int x, y, x_start, y_start, y_print; int x_num, y_num; int x_range, y_range; int isprint = 0; char buf[128] = {0}; SDL_Widget *label = NULL; x_num = getTableNumElement(L, "con", "BURNIN_SPLIT_X_NUM"); y_num = getTableNumElement(L, "con", "BURNIN_SPLIT_Y_NUM"); x_range = getTableNumElement(L, "con", "BURNIN_SPLIT_X"); y_range = getTableNumElement(L, "con", "BURNIN_SPLIT_Y"); x_start = 0; y_start = getTableNumElement(L, "con", "BURNIN_SPLIT_Y_START"); x = 0; y = 0; y_print = 0; //printStr( "hello world!!", 200, 200); refreshWin(); if( x_num * y_num > data->flow_number) { isprint = 1; x = x_range * ( data->flow_number % x_num); y = y_start + y_range * ( data->flow_number / x_num); y_print = getTableNumElement(L, "con", "BURNIN_SPLIT_PRINT"); } printf( "x %d, y %d, y_pint %d \n", x, y, y_print); if( isprint) { sprintf(buf, "%s TEST is running.", radios[ data->flow_number]); label = printStr( buf, x, y); y += y_print; refreshWin(); } char run_file[1024] = {0}; char *path = (char *)getTableElement(L, "con", "PATH"); sprintf( run_file, "%sburnin/%s/run.lua",path,radios[ data->flow_number]); printf( "go-run.lua: %s\n", run_file); /* printf( "go_burnin_thread: %d, %s \n", data->flow_number, radios[ data->flow_number]); char path[128] = {0}; sprintf( path, "./%s/run.lua", radios[ data->flow_number]); printf( "go_burnin_thread: %s \n", path); */ while(burnin_run) { /* r = run( L, path);*/ r = run( L, run_file); if( r) { if ( isprint && burnin_run) { sprintf( buf, "%s TEST ....Error.", radios[ data->flow_number]); printStr( buf, x, y); y += y_print; refreshWin(); } break; } } /* if( isprint ) { sprintf( buf, "%s TEST ....OK.", radios[ data->flow_number]); printStr( buf, x, y); y += y_print; refreshWin(); } */ data->ret_value = r; return 0; }