int main(int argc, char **argv) { int err_code = NO_ERROR; cpu_set_t cpuset; struct ntttcp_test *test; struct ntttcp_test_endpoint *tep; /* catch SIGINT: Ctrl + C */ if (signal(SIGINT, sig_handler) == SIG_ERR) PRINT_ERR("main: error when setting the disposition of the signal SIGINT"); print_version(); test = new_ntttcp_test(); if (!test) { PRINT_ERR("main: error when creating new test"); exit (-1); } default_ntttcp_test(test); err_code = parse_arguments(test, argc, argv); if (err_code != NO_ERROR) { PRINT_ERR("main: error when parsing args"); print_flags(test); free(test); exit (-1); } err_code = verify_args(test); if (err_code != NO_ERROR) { PRINT_ERR("main: error when verifying the args"); print_flags(test); free(test); exit (-1); } if (test->verbose) print_flags(test); turn_off_light(); if (test->cpu_affinity != -1) { CPU_ZERO(&cpuset); CPU_SET(test->cpu_affinity, &cpuset); PRINT_INFO("main: set cpu affinity"); if ( pthread_setaffinity_np( pthread_self(), sizeof(cpu_set_t ), &cpuset) != 0 ) PRINT_ERR("main: cannot set cpu affinity"); } if (test->daemon) { PRINT_INFO("main: run this tool in the background"); if ( daemon(0, 0) != 0 ) PRINT_ERR("main: cannot run this tool in the background"); } if (test->client_role == true) { tep = new_ntttcp_test_endpoint(test, ROLE_SENDER); err_code = run_ntttcp_sender(tep); } else { tep = new_ntttcp_test_endpoint(test, ROLE_RECEIVER); err_code = run_ntttcp_receiver(tep); } free_ntttcp_test_endpoint_and_test(tep); return err_code; }
/*! \brief main() is the typical main function in a C program, it performs all core initialization, loading of all main parameters, initializing handlers and entering gtk_main to process events until program close \param argc (gint) count of command line arguments \param argv (char **) array of command line args \returns TRUE */ gint main(gint argc, gchar ** argv) { gint port_fd = 0; gint file_fd = 0; verify_args(argc, argv); output(g_strdup_printf("MegaTunix msloader %s\n",VERSION),TRUE); /* If we got this far, all is good argument wise */ if (!lock_port(argv[2])) { output("Could NOT LOCK Serial Port\nCheck for already running serial apps using the port\n",FALSE); exit(-1); } port_fd = open_port(argv[2]); if (port_fd > 0) output("Port successfully opened\n",FALSE); else { output("Could NOT open Port check permissions\n",FALSE); unlock_port(); exit(-1); } #ifdef __WIN32__ file_fd = open(argv[3], O_RDWR | O_BINARY ); #else file_fd = g_open(argv[3],O_RDONLY,S_IRUSR); #endif if (file_fd > 0 ) output("Firmware file successfully opened\n",FALSE); else { output("Could NOT open firmware file, check permissions/paths\n",FALSE); close_port(port_fd); unlock_port(); exit(-1); } if (type == MS1) { setup_port(port_fd, 9600); do_ms1_load(port_fd,file_fd); } else if (type == MS2) { setup_port(port_fd,115200); do_ms2_load(port_fd,file_fd); } else if (type == FREEEMS) { setup_port(port_fd,115200); do_freeems_load(port_fd,file_fd); } flush_serial(port_fd,BOTH); close_port(port_fd); unlock_port(); return (0) ; }
static void syscall_handler (struct intr_frame *f) { uint32_t* args = ((uint32_t*) f->esp); // OUR CODE HERE verify_user_ptr(args); switch (args[0]) { case SYS_EXIT: { verify_args(args, 1); f->eax = args[1]; exit(args[1]); break; } case SYS_NULL: { verify_args(args, 1); f->eax = args[1] + 1; break; } case SYS_WRITE: { verify_args(args, 3); lock_acquire(&file_lock); f->eax = write(args[1], user_to_kernel((void *) args[2]), args[3]); lock_release(&file_lock); break; } case SYS_HALT: { shutdown_power_off(); break; } case SYS_WAIT: { verify_args(args, 1); f->eax = wait((tid_t) args[1]); break; } case SYS_EXEC: { verify_args(args, 1); f->eax = exec(user_to_kernel((void *) args[1])); break; } case SYS_CREATE: { verify_args(args, 2); f->eax = create(user_to_kernel((void *) args[1]), args[2]); break; } case SYS_REMOVE: { verify_args(args, 1); f->eax = remove(user_to_kernel((void *) args[1])); break; } case SYS_OPEN: { verify_args(args, 1); f->eax = open(user_to_kernel((void *) args[1])); break; } case SYS_FILESIZE: { verify_args(args, 1); f->eax = filesize(args[1]); break; } case SYS_READ: { verify_args(args, 3); f->eax = read(args[1], user_to_kernel((void *) args[2]), args[3]); break; } case SYS_SEEK: { verify_args(args, 2); seek(args[1], args[2]); break; } case SYS_TELL: { verify_args(args, 1); f->eax = tell(args[1]); break; } case SYS_CLOSE: { verify_args(args, 1); close(args[1]); break; } } }