Esempio n. 1
0
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;
	}
}
Esempio n. 2
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();

		   }