示例#1
0
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 */
示例#2
0
文件: sio2man.c 项目: sp193/ps2sdk
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;
}