int _start ( int argc, const char** argv ) { int retVal = MODULE_NO_RESIDENT_END; if ( RegisterLibraryEntries ( &_exp_sio2man ) == 0 ) { int lState; int lThreadID; iop_thread_t lThread; iop_event_t lEvent; lEvent.attr = 2; lEvent.bits = 0; s_EventFlag = CreateEventFlag ( &lEvent ); lThread.attr = TH_C; lThread.thread = _MainThread; lThread.stacksize = 0x2000; lThread.priority = 24; lThreadID = CreateThread ( &lThread ); s_Callback0 = NULL; s_Callback1 = NULL; s_Callback2 = NULL; s_Callback3 = NULL; SIO2_SetCtrl3BC (); CpuSuspendIntr ( &lState ); RegisterIntrHandler ( IOP_IRQ_SIO2, 1, _IntHandler, &s_EventFlag ); EnableIntr ( IOP_IRQ_SIO2 ); CpuResumeIntr ( lState ); dmac_ch_set_dpcr ( IOP_DMAC_SIO2in, 3 ); dmac_ch_set_dpcr ( IOP_DMAC_SIO2out, 3 ); dmac_enable ( IOP_DMAC_SIO2in ); dmac_enable ( IOP_DMAC_SIO2out ); StartThread ( lThreadID, NULL ); retVal = MODULE_RESIDENT_END; } /* end if */ return retVal; } /* end _start */
int _start(int argc, const char **argv) { int state; shutdown(); if (RegisterLibraryEntries(&_exp_sio2man) != 0) return 1; if (init) return 1; init = 1; sio2_ctrl_set(0x3bc); cb1 = NULL; cb2 = NULL; cb3 = NULL; cb4 = NULL; event_flag = create_event_flag(); thid = create_main_thread(); CpuSuspendIntr(&state); RegisterIntrHandler(IOP_IRQ_SIO2, 1, sio2_intr_handler, &event_flag); EnableIntr(IOP_IRQ_SIO2); CpuResumeIntr(state); dmac_ch_set_dpcr(IOP_DMAC_SIO2in, 3); dmac_ch_set_dpcr(IOP_DMAC_SIO2out, 3); dmac_enable(IOP_DMAC_SIO2in); dmac_enable(IOP_DMAC_SIO2out); StartThread(thid, NULL); #ifndef XSIO2MAN EPRINTF("Logging started.\n"); #endif return 0; }