/* Entry point */ int module_start(SceSize args, void *argp) { int thid; int retv; retv = sceUsbStart(PSP_USBBUS_DRIVERNAME, 0, 0); if(retv){ return 0; } retv = sceUsbStart(HOSTFSDRIVER_NAME, 0, 0); if(retv){ return 0; } retv = sceUsbActivate(HOSTFSDRIVER_PID); usbAsyncRegister(ASYNC_SHELL, &g_endp); usbAsyncRegister(ASYNC_STDOUT, &g_stdin); usbWaitForConnect(); retv = stdioTtyInit(); stdioInstallStdoutHandler(usbStdoutPrint); stdioInstallStderrHandler(usbStderrPrint); printk("Usbshell Start!\n"); /* Create a high priority thread */ thid = sceKernelCreateThread("USBShell", main_thread, 12, 0x2000, 0, NULL); if(thid >= 0) { sceKernelStartThread(thid, args, argp); } return 0; }
void ttyInit(void) { SceUID uid; if(stdioTtyInit() < 0) { Kprintf("Could not initialise tty\n"); return; } stdioInstallStdoutHandler(stdoutHandler); stdioInstallStderrHandler(stderrHandler); stdioInstallStdinHandler(inputHandler); /* Install a patch to prevent a naughty app from closing stdout */ uid = refer_module_by_name("sceIOFileManager", NULL); if(uid >= 0) { apiHookByNid(uid, "IoFileMgrForUser", 0x810c4bc3, close_func); libsPatchFunction(uid, "IoFileMgrForKernel", 0x3c54e908, 0xFFFF); } }