5#include "common_header.h"
8#define SCE_FREAD (0x0001)
9#define SCE_FWRITE (0x0002)
10#define SCE_FNBLOCK (0x0004)
11#define SCE_FDIRO (0x0008)
12#define SCE_FRLOCK (0x0010)
13#define SCE_FWLOCK (0x0020)
14#define SCE_FAPPEND (0x0100)
15#define SCE_FCREAT (0x0200)
16#define SCE_FTRUNC (0x0400)
17#define SCE_EXCL (0x0800)
18#define SCE_FSCAN (0x1000)
19#define SCE_FRCOM (0x2000)
20#define SCE_FNBUF (0x4000)
21#define SCE_FASYNC (0x8000)
22#define SCE_FFDEXCL (0x01000000)
23#define SCE_FPWLOCK (0x02000000)
24#define SCE_FENCRYPTED (0x04000000)
25#define SCE_FGAMEDATA (0x40000000)
28#define SCE_O_RDONLY (SCE_FREAD)
29#define SCE_O_WRONLY (SCE_FWRITE)
30#define SCE_O_RDWR (SCE_FREAD|SCE_FWRITE)
31#define SCE_O_NBLOCK (SCE_FNBLOCK)
32#define SCE_O_APPEND (SCE_FAPPEND)
33#define SCE_O_CREAT (SCE_FCREAT)
34#define SCE_O_TRUNC (SCE_FTRUNC)
35#define SCE_O_EXCL (SCE_EXCL)
36#define SCE_O_NOBUF (SCE_FNBUF)
37#define SCE_O_NOWAIT (SCE_FASYNC)
38#define SCE_O_FDEXCL (SCE_FFDEXCL)
39#define SCE_O_PWLOCK (SCE_FPWLOCK)
40#define SCE_O_ENCRYPTED (SCE_FENCRYPTED)
41#define SCE_O_FGAMEDATA (SCE_FGAMEDATA)
44#define SCE_STM_RWXU 00700
45#define SCE_STM_RUSR 00400
46#define SCE_STM_WUSR 00200
47#define SCE_STM_XUSR 00100
49#define SCE_STM_RWXG 00070
50#define SCE_STM_RGRP 00040
51#define SCE_STM_WGRP 00020
52#define SCE_STM_XGRP 00010
54#define SCE_STM_RWXO 00007
55#define SCE_STM_ROTH 00004
56#define SCE_STM_WOTH 00002
57#define SCE_STM_XOTH 00001
59#define SCE_STM_RWXUGO (SCE_STM_RWXU|SCE_STM_RWXG|SCE_STM_RWXO)
60#define SCE_STM_RUGO (SCE_STM_RUSR|SCE_STM_RGRP|SCE_STM_ROTH)
61#define SCE_STM_WUGO (SCE_STM_WUSR|SCE_STM_WGRP|SCE_STM_WOTH)
62#define SCE_STM_XUGO (SCE_STM_XUSR|SCE_STM_XGRP|SCE_STM_XOTH)
69typedef struct ScePspDateTime {
79typedef struct SceIoStat
84 ScePspDateTime st_ctime;
85 ScePspDateTime st_atime;
86 ScePspDateTime st_mtime;
90typedef struct SceIoDirent
98typedef struct SceIoCwd SceIoCwd, *PSceIoCwd;
99typedef struct SceIoDeviceEntry SceIoDeviceEntry, *PSceIoDeviceEntry;
100typedef struct SceIoDeviceFunction SceIoDeviceFunction, *PSceIoDeviceFunction;
101typedef struct SceIoDeviceTable SceIoDeviceTable, *PSceIoDeviceTable;
102typedef struct SceIoIob SceIoIob, *PSceIoIob;
103typedef struct SceIoThreadCwd SceIoThreadCwd, *PSceIoThreadCwd;
105typedef int (* df_init_t)(
struct SceIoDeviceEntry *);
106typedef int (* df_exit_t)(
struct SceIoDeviceEntry *);
107typedef int (* df_close_t)(
struct SceIoIob *);
108typedef int (* df_remove_t)(
struct SceIoIob *,
char *);
109typedef int (* df_rmdir_t)(
struct SceIoIob *,
char *);
110typedef int (* df_dopen_t)(
struct SceIoIob *,
char *);
111typedef int (* df_dclose_t)(
struct SceIoIob *);
112typedef int (* df_chdir_t)(
struct SceIoIob *,
char *);
113typedef int (* df_umount_t)(
struct SceIoIob *,
char *);
114typedef int (* df_cancel_t)(
struct SceIoIob *);
116struct SceIoDeviceFunction {
119 int (* df_open)(
struct SceIoIob *,
char *, int, SceMode);
121 SceSSize (* df_read)(
struct SceIoIob *,
void *, SceSize);
122 SceSSize (* df_write)(
struct SceIoIob *,
const void *, SceSize);
123 SceOff (* df_lseek)(
struct SceIoIob *, SceOff, int);
124 int (* df_ioctl)(
struct SceIoIob *, int,
void *, SceSize,
void *, SceSize);
125 df_remove_t df_remove;
126 int (* df_mkdir)(
struct SceIoIob *,
char *, SceMode);
129 df_dclose_t df_dclose;
130 int (* df_dread)(
struct SceIoIob *,
struct SceIoDirent *);
131 int (* df_getstat)(
struct SceIoIob *,
char *,
struct SceIoStat *);
132 int (* df_chstat)(
struct SceIoIob *,
char *,
struct SceIoStat *, u32);
133 int (* df_rename)(
struct SceIoIob *,
const char *,
const char *);
135 int (* df_mount)(
struct SceIoIob *,
const char *,
const char *, int,
void *, int);
136 df_umount_t df_umount;
137 int (* df_devctl)(
struct SceIoIob *,
char *, int,
void *, SceSize,
void *, SceSize);
138 df_cancel_t df_cancel;
142 struct SceIoCwd * next;
144 struct SceIoDeviceEntry * entry;
149struct SceIoDeviceEntry {
150 struct SceIoDeviceTable * d_dp;
155struct SceIoDeviceTable {
160 struct SceIoDeviceFunction * dt_func;
164typedef struct SceIoHookType SceIoHookType;
167typedef struct SceIoHook SceIoHook;
171 void (*Add)(SceIoHookType **hook);
173 int (*Preobe)(SceIoHook *hook,
char *file,
int flags, SceMode mode);
174 int (*Open)(SceIoHook *hook,
char *file,
int flags, SceMode mode);
175 int (*Close)(SceIoHook *hook);
176 int (*Read)(SceIoHook *hook,
void *data, SceSize size);
177 int (*Write)(SceIoHook *hook,
const void *data, SceSize size);
178 SceOff (*Lseek)(SceIoHook *hook, SceOff ofs,
int whence);
179 int (*Ioctl)(SceIoHook *iob,
unsigned int cmd,
void *indata,
int inlen,
void *outdata,
int outlen);
188 SceIoHookFuncs *funcs;
220 SceIoDeviceFunction *funcs;
227 struct SceIoDeviceEntry *i_de;
230 struct SceIoCwd *i_cwd;
261struct SceIoThreadCwd {
262 struct SceIoThreadCwd * next;
264 struct SceIoCwd * cwd;
267int sceIoChangeAsyncPriority(
int fd,
int prio);
269int sceIoReopen(
const char *file,
int flags, SceMode mode,
int fd);
270SceUID sceIoDopen(
const char *dirname);
271int sceIoDread(
int fd, SceIoDirent *dir);
272int sceIoDclose(
int fd);
273int sceIoRemove(
const char *file);
274int sceIoRename(
const char *oldname,
const char *newname);
275int sceIoDevctl(
const char *dev,
unsigned int cmd,
void *indata,
int inlen,
void *outdata,
int outlen);
278#define SCE_MT_RDWR 0x00
279#define SCE_MT_RDONLY 0x01
280#define SCE_MT_ROBUST 0x02
281#define SCE_MT_ERRCHECK 0x04
283int sceIoAssign(
const char *dev,
const char *blockDev,
const char *fs,
int mode,
void* unk1,
int unk2);
284int sceIoUnassign(
const char *dev);
285int sceIoChangeThreadCwd(SceUID threadId,
const char *path);
286int sceIoCancel(
int fd);
287int sceIoGetFdList(SceUID *fds,
int numFd,
int *count);
288int sceIoGetFdDebugInfo(
int fd, SceIoFdDebugInfo *outInfo);
289int sceIoAddDrv(SceIoDeviceTable *drv);
290int sceIoDelDrv(
const char *drv);
291int sceIoGetUID(
int fd);
292int sceIoPollAsync(SceUID fd, SceInt64 *res);
293int sceIoWaitAsync(SceUID fd, SceInt64 *res);
294int sceIoWaitAsyncCB(SceUID fd, SceInt64 *res);
295int sceIoGetAsyncStat(SceUID fd,
int poll, SceInt64 *res);
296int sceIoSetAsyncCallback(SceUID fd, SceUID cb,
void *argp);
297int sceIoValidateFd(SceUID fd,
int arg1);
298int sceIoClose(SceUID fd);
299int sceIoCloseAsync(SceUID fd);
300SceUID sceIoOpen(
const char *file,
int flags, SceMode mode);
301SceUID sceIoOpenAsync(
const char *file,
int flags, SceMode mode);
302int sceIoRead(SceUID fd,
void *data, SceSize size);
303int sceIoReadAsync(SceUID fd,
void *data, SceSize size);
304int sceIoWrite(SceUID fd,
const void *data, SceSize size);
305int sceIoWriteAsync(SceUID fd,
const void *data, SceSize size);
306SceOff sceIoLseek(SceUID fd, SceOff offset,
int whence);
307SceOff sceIoLseekAsync(SceUID fd, SceOff offset,
int whence);
308int sceIoLseek32(SceUID fd,
int offset,
int whence);
309int sceIoLseek32Async(SceUID fd,
int offset,
int whence);
314#define SCE_GAMEDATA_SET_SECURE_INSTALL_ID (0x04100001)
316int sceIoIoctl(SceUID fd,
unsigned int cmd,
void *indata,
int inlen,
void *outdata,
int outlen);
317int sceIoIoctlAsync(SceUID fd,
unsigned int cmd,
void *indata,
int inlen,
void *outdata,
int outlen);
320int sceIoMkdir(
const char *path, SceMode mode);
321int sceIoRmdir(
const char *path);
322int sceIoChdir(
const char *path);
325int sceIoGetstat(
const char *file, SceIoStat *stat);
326int sceIoChstat(
const char *file, SceIoStat *stat,
int bits);
327int sceIoSync(
const char *device,
unsigned int unk);
328int sceIoGetDevType(SceUID fd);
329int sceIoGetThreadCwd(SceUID uid,
char *dir,
int len);
330int sceIoTerminateFd(
char *drive);
331int sceIoAddHook(SceIoHookType *hook);
332int sceIoGetIobUserLevel(SceIoIob *iob);