int _start(int argc, char *argv[]) { iop_event_t event; int semid, evflg, res; if ((semid = CreateMutex(IOP_MUTEX_UNLOCKED)) < 0) { E_PRINTF("Unable to create %s (error %d).\n", "semaphore", semid); return 1; } eng_args.semid = semid; event.attr = event.bits = 0; if ((evflg = CreateEventFlag(&event)) < 0) { E_PRINTF("Unable to create %s (error %d).\n", "event flag", evflg); return 1; } eng_args.evflg = evflg; CpuEnableIntr(); DisableIntr(IOP_IRQ_DMA_DEV9, NULL); if ((res = RegisterIntrHandler(IOP_IRQ_DMA_DEV9, 1, dev9_dma_handler, &eng_args.evflg))) { E_PRINTF("Unable to register 0x%02x intr handler (error %d).\n", IOP_IRQ_DMA_DEV9, res); return 1; } _sw(_lw(0xbf801570) | 0x80, 0xbf801570); if ((res = ata_engine_init(&eng_args)) < 0) { E_PRINTF("Unable to initialize the %s DMA engine.\n", "ATA"); return 1; } if ((res = smap_engine_init(&eng_args)) < 0) { E_PRINTF("Unable to initialize the %s DMA engine.\n", "SMAP"); return 1; } M_PRINTF("ATA/SMAP DMA relay module initialized.\n"); return 0; }
bool search_path(int i, int j, int current, int idx ) { path[idx++] = numbers[i][j]; current += numbers[i][j]; if(i == MAX_X-1) { total_cnt ++; E_PRINTF("%d ",current); if(current > current_max) { current_max = current; memcpy(path_save, path, MAX_X); } return TRUE; } if(search_path(i+1, j, current,idx)) { return search_path(i+1, j+1, current,idx); } }