int main(int argc, char *argv[]) { int ret, status; pid_t pid; int flag; char user_name[128]; char work_dir[WORK_DIR_LEN]; if (argc != 3) { write_log(APP_LOG, 0, "usgae: ./main username code_id"); exit(-1); } if (atexit(remove_files) != 0) { write_log(APP_LOG, 1, "atexit error"); exit(-1); } if (atexit(update_ret_to_db) != 0) { write_log(APP_LOG, 1, "atexit error"); exit(-1); } umask(0); strcpy(user_name, argv[1]); strcpy(code_id, argv[2]); make_work_dir(user_name, work_dir); if (chdir(work_dir) < 0) { write_log(APP_LOG, 0, "chdir to wrok_dir error"); exit(-1); } init_remove_files(); init_create_files(); //sleep(5); get_code_text(code_id); get_data_input(code_id); #ifdef DEBUG //FILE *fp = fopen(DATA_IN, "w"); //fputs("1", fp); //fclose(fp); #endif ret = compile(USER_CODE); if (ret != COMPILED_OK) { write_log(LOG, 0, "compile error, see the ce.out"); exit(-1); } else { write_log(LOG, 0, "compile ok, now start run"); if (chown("./compiled_file", USER_ID, USER_ID) < 0) { write_log(INT_RE, 1, "chown compiled_file error"); exit(-1); } } pid = fork(); if (pid < 0) { write_log(INT_RE, 1, "fork error (in main)"); exit(-1); } else if (pid == 0) { run_solution(work_dir); } else { //parent watch_solution(pid, &flag); if (flag == CODE_TL) { write_log(RE, 0, "time exceed"); } else if (flag == CODE_ML) { write_log(RE, 0, "mem exceed"); } else if (flag == CODE_OL) { write_log(RE, 0, "output exceed"); } else if (flag == CODE_RE) { write_log(RE, 0, "runtime error"); } return 0; } }
void process_uart_data(uint8_t key) { switch(key) { case 'R' : case 'r': { //print_registers(); display_brt_regs(); break; } case 'H': case 'h': { display_help(); break; } case 'D': case 'd': { current_sub_addr = validate_brt_sa_input(); if ( current_sub_addr > 0) { // 0 mean esc from current operation display_brt_data(CORE1553BRT_0 ,current_sub_addr); } break; } case 'M': case 'm': { uint16_t brt_tx_data_addr; current_sub_addr = validate_brt_sa_input(); if ( current_sub_addr > 0) { // 0 mean esc from current brt_tx_data_addr = ( CORE1553BRT_BASE_ADDR + (BRT_RX_SA1 * current_sub_addr) +BRT_RX_TX_ADDR_OFSET) ; //0x1080 modify_mem_data (brt_tx_data_addr,BRT_SUBADDR_DATA_COUNT); } break; } case 'c': case 'C': { uint8_t brt_rtaddr; dp_display_text("Enter New RTADDR # ( 0 to 30): "); brt_rtaddr = get_data_input (); if ((brt_rtaddr > 0 ) && (brt_rtaddr < 31)) { modify_rt_address(CORE1553BRT_BASE_ADDR, brt_rtaddr); break; } else { dp_display_text("\r\n\Invaid input !!!!! Enter Address # ( 0 to 30): "); break; } break; } default: /* If selected key is out of range */ { break; } } display_prompt(); }