u32 sceIoIoctlAsync(u32 id, u32 cmd, u32 indataPtr, u32 inlen, u32 outdataPtr, u32 outlen) { DEBUG_LOG(HLE, "sceIoIoctlAsync(%08x, %08x, %08x, %08x, %08x, %08x)", id, cmd, indataPtr, inlen, outdataPtr, outlen); sceIoIoctl(id, cmd, indataPtr, inlen, outdataPtr, outlen); __IoCompleteAsyncIO(id); return 0; }
static int myIoIoctl(SceUID fd, unsigned int cmd, void * indata, int inlen, void * outdata, int outlen) { int ret; if(cmd == 0x04100001) { printk("%s: setting PGD key\n", __func__); hexdump(indata, inlen); } if(cmd == 0x04100002) { printk("%s: setting PGD offset: 0x%08X\n", __func__, *(uint*)indata); } if (g_is_custom_ps1 || (g_plain_doc_fd >= 0 && g_plain_doc_fd == fd)) { if (cmd == 0x04100001) { ret = 0; printk("%s: [FAKE] 0x%08X 0x%08X -> 0x%08X\n", __func__, fd, cmd, ret); goto exit; } if (cmd == 0x04100002) { ret = sceIoLseek32(fd, *(u32*)indata, PSP_SEEK_SET); if(ret < 0) { printk("%s: sceIoLseek32 -> 0x%08X\n", __func__, ret); } ret = 0; printk("%s: [FAKE] 0x%08X 0x%08X -> 0x%08X\n", __func__, fd, cmd, ret); goto exit; } } ret = sceIoIoctl(fd, cmd, indata, inlen, outdata, outlen); exit: printk("%s: 0x%08X -> 0x%08X\n", __func__, fd, ret); return ret; }
int myIoIoctl(SceUID fd, unsigned int cmd, void * indata, int inlen, void * outdata, int outlen) { int ret; if (cmd == 0x04100001 || cmd == 0x04100002) { if (is_nodrm_fd(fd)) { ret = 0; goto exit; } } ret = sceIoIoctl(fd, cmd, indata, inlen, outdata, outlen); exit: #ifdef DEBUG if (cmd == 0x04100001 || cmd == 0x04100002) { printk("%s: 0x%08X -> 0x%08X\n", __func__, fd, ret); } #endif return ret; }