int main(void) { DDRB |= 0b1111111; DDRA |= 0b11100001; PORTB = 0; adc_setup(); task_setup(); task_start(); task_manager(); return 0; }
int main() { // Set up low level systems: bus_setup(); io_setup(); periods_setup(); memory_setup(); task_setup(); midi_io_setup(); apu_setup(); battery_setup(); assigner_setup(); sequencer_setup(); ui_sequencer_setup(); ui_programmer_setup(); // The task manager takes over from here task_manager(); }
INT16S start_rtcs_scheduler(void) /***************************************************************************** * Input : - * Output : - * Function : The RTCS scheduler ******************************************************************************/ { // contains temp status of semaphores. // INT16U semaphores_task = 0; ENTER_CRITICAL(); task_setup(); init_tasks(); systick_init(); EXIT_CRITICAL(); while(1) { if (systick_get()) { systick_decrement(); for (rtcs_i = 0; rtcs_i < LAST_TASK+1; rtcs_i++) { if ((task_state[rtcs_i] == RUNNING) && (task_time[rtcs_i] > 0)) { task_time[rtcs_i]--; } } for (rtcs_i = 0; rtcs_i < LAST_TASK+1; rtcs_i++) { if _READY(rtcs_i) { task_time[rtcs_i] = 0; current_task = rtcs_i; // Call task. (*task[rtcs_i])(); } } } // if (tick_flag) } // while(!) return 0; }
int16_t start_rtcs_scheduler(void) /***************************************************************************** * Input : - * Output : - * Function : The RTCS scheduler ******************************************************************************/ { // contains temp status of semaphores. // INT16U semaphores_task = 0; ENTER_CRITICAL(); timer0_systick_init(); timer0_systick_start(); task_setup(); init_tasks(); EXIT_CRITICAL(); while(1) { //Simple and no good implementation of timer incrementation //This needs to be changed into a correct interrupt handler. if (Xil_In32(XSCUTIMER_0_INT_STATUS_REG) & 0x00000001) { // Clear SCUtimer interrupt flag Xil_Out32(XSCUTIMER_0_INT_STATUS_REG,0x00000001); //increment tick systick_increment(); //increment systime systime_increment(); } if (systick_get()) { systick_decrement(); for (rtcs_i = 0; rtcs_i < LAST_TASK+1; rtcs_i++) { if ((task_state[rtcs_i] == RUNNING) && (task_time[rtcs_i] > 0)) { task_time[rtcs_i]--; } } for (rtcs_i = 0; rtcs_i < LAST_TASK+1; rtcs_i++) { if _READY(rtcs_i) { task_time[rtcs_i] = 0; current_task = rtcs_i; // Call task. (*task[rtcs_i])(); } } if(err_overload_hndlr != NULL) { //call overload error handler (*err_overload_hndlr)(systick_get()); //if tick > 0 the cpu is overloaded } } } // while(!) return 0; }
/** * Vstupni bod programu. */ int main(int argc, char **argv) { // inicializace MPI MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &node); MPI_Comm_size(MPI_COMM_WORLD, &node_count); srpdebug("mpi", node, "inicializace <uzel=%d/%d>", node, node_count); // vsichni si poznamenaji cas spusteni tbeg MPI_Barrier(MPI_COMM_WORLD); tbeg = MPI_Wtime(); // inicializace random seminka srand(time(NULL) + getpid() + node); // nacteni ulohy a distribuce provadi uzel 0 if(node == 0) { parse_args(argc, argv); // nacteni ulohy if(!read_file(filename)) { srpfprintf(stderr, node, "chyba: nelze nacist zadani ulohy SRP `%s''", filename); exit(EXIT_FAILURE); } if(filename) free(filename); } // distribuovat zadani mpi_bcast_task(); // pripravit zasobnik s = stack_init(); // referencni reseni pro porovnavani tf = task_init(t->n, t->k, t->q); task_setup(tf); // inicializace uzlu pocatecni praci cc = 0; co = 0; // inicializace pesku mpi_token[TOKEN_SOLVER] = -1; mpi_token[TOKEN_PENALTY] = -1; if(node == 0) { mpi_solve_init(); } // zaruci ze vsichni dostanou praci MPI_Barrier(MPI_COMM_WORLD); if(node > 0) mpi_handle(); // resit ulohu mpi_solve(); // v mpi_solve je nekonecna smycka, konec se resi volanim funkce // finalize(); // this is another brick in the -Wall return EXIT_FAILURE; }