summaryrefslogtreecommitdiff
path: root/include/common
diff options
context:
space:
mode:
Diffstat (limited to 'include/common')
-rw-r--r--include/common/kernel/iofilemgr.h74
-rw-r--r--include/common/kernel/iofilemgr/async.h21
-rw-r--r--include/common/kernel/iofilemgr/dirent.h23
-rw-r--r--include/common/kernel/iofilemgr/stat.h46
4 files changed, 164 insertions, 0 deletions
diff --git a/include/common/kernel/iofilemgr.h b/include/common/kernel/iofilemgr.h
new file mode 100644
index 0000000..ed03d3b
--- /dev/null
+++ b/include/common/kernel/iofilemgr.h
@@ -0,0 +1,74 @@
+#ifndef _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_H_
+#define _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_H_
+
+#include <psp2common/kernel/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* device types */
+#define SCE_D_TYPE_NULL 0x0 /* dummy device */
+#define SCE_D_TYPE_CHAR 0x1 /* character device */
+#define SCE_D_TYPE_BLOCK 0x4 /* block device */
+#define SCE_D_TYPE_FS 0x10 /* file system */
+#define SCE_D_TYPE_ALIAS 0x20 /* alias name (device alias) */
+#define SCE_D_TYPE_MOUNTPT 0x40 /* alias name (mount point) */
+
+/* flags */
+#define SCE_FREAD (0x0001) /* readable */
+#define SCE_FWRITE (0x0002) /* writable */
+#define SCE_FNBLOCK (0x0004) /* Reserved: non-blocking reads */
+#define SCE_FDIRO (0x0008) /* internal use for dopen */
+#define SCE_FRLOCK (0x0010) /* Reserved: read locked (non-shared) */
+#define SCE_FWLOCK (0x0020) /* Reserved: write locked (non-shared) */
+#define SCE_FAPPEND (0x0100) /* append on each write */
+#define SCE_FCREAT (0x0200) /* create if nonexistant */
+#define SCE_FTRUNC (0x0400) /* truncate to zero length */
+#define SCE_EXCL (0x0800) /* exclusive create */
+#define SCE_FSCAN (0x1000) /* Reserved: scan type */
+#define SCE_FRCOM (0x2000) /* Reserved: remote command entry */
+#define SCE_FNBUF (0x4000) /* no device buffer */
+#define SCE_FASYNC (0x8000) /* Reserved: asyncronous i/o */
+#define SCE_FFDEXCL (0x01000000) /* exclusive access */
+#define SCE_FGAMEDATA (0x40000000)
+
+/* Flag for sceIoOpen() */
+#define SCE_O_RDONLY (SCE_FREAD)
+#define SCE_O_WRONLY (SCE_FWRITE)
+#define SCE_O_RDWR (SCE_FREAD|SCE_FWRITE)
+#define SCE_O_NBLOCK (SCE_FNBLOCK) /* Reserved: Non-Blocking I/O */
+#define SCE_O_APPEND (SCE_FAPPEND) /* append (writes guaranteed at the end) */
+#define SCE_O_CREAT (SCE_FCREAT) /* open with file create */
+#define SCE_O_TRUNC (SCE_FTRUNC) /* open with truncation */
+#define SCE_O_EXCL (SCE_EXCL) /* exclusive create */
+#define SCE_O_NOBUF (SCE_FNBUF) /* no device buffer */
+#define SCE_O_NOWAIT (SCE_FASYNC) /* Reserved: asyncronous i/o */
+#define SCE_O_FDEXCL (SCE_FFDEXCL) /* exclusive access */
+#define SCE_O_PWLOCK (SCE_FPWLOCK) /* power control lock */
+#define SCE_O_FGAMEDATA (SCE_FGAMEDATA)
+
+/* Flag for sceIoLseek() */
+#define SCE_SEEK_SET (0)
+#define SCE_SEEK_CUR (1)
+#define SCE_SEEK_END (2)
+
+/* Path */
+#define SCE_IO_MAX_PATH_BUFFER_SIZE (1024) /* maximum path buffer size */
+#define SCE_IO_MAX_PATH_LENGTH (200) /* maximum path length */
+
+/**
+ * May be used with sceIoDevctl()
+ */
+typedef struct SceIoDevInfo {
+ SceOff max_size;
+ SceOff free_size;
+ SceSize cluster_size;
+ void *unk;
+} SceIoDevInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_H_ */
diff --git a/include/common/kernel/iofilemgr/async.h b/include/common/kernel/iofilemgr/async.h
new file mode 100644
index 0000000..b0c0feb
--- /dev/null
+++ b/include/common/kernel/iofilemgr/async.h
@@ -0,0 +1,21 @@
+#ifndef _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_ASYNC_H_
+#define _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_ASYNC_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct SceIoAsyncParam {
+ int result; // [out] result of the IO operation (e.g. UID, read/wrote size, error code)
+ int unk_04; // [out]
+ int unk_08; // [in]
+ int unk_0C; // [out]
+ int unk_10; // [out]
+ int unk_14; // [out]
+} SceIoAsyncParam;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_ASYNC_H_ */
diff --git a/include/common/kernel/iofilemgr/dirent.h b/include/common/kernel/iofilemgr/dirent.h
new file mode 100644
index 0000000..1e28c22
--- /dev/null
+++ b/include/common/kernel/iofilemgr/dirent.h
@@ -0,0 +1,23 @@
+#ifndef _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_DIRENT_H_
+#define _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_DIRENT_H_
+
+#include <psp2common/kernel/types.h>
+#include <psp2common/kernel/iofilemgr/stat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Describes a single directory entry */
+typedef struct SceIoDirent {
+ SceIoStat d_stat; //!< File status
+ char d_name[256]; //!< File name (not file path)
+ void *d_private; //!< Reserved (set to 0)
+ int dummy; //!< Padding
+} SceIoDirent;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_DIRENT_H_ */
diff --git a/include/common/kernel/iofilemgr/stat.h b/include/common/kernel/iofilemgr/stat.h
new file mode 100644
index 0000000..a9f9f73
--- /dev/null
+++ b/include/common/kernel/iofilemgr/stat.h
@@ -0,0 +1,46 @@
+#ifndef _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_STAT_H_
+#define _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_STAT_H_
+
+#include <psp2common/kernel/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Filetypes and Protection bits */
+#define SCE_STM_FMT (0xf << 12)
+#define SCE_STM_FREG (0x2 << 12) /* regular file */
+#define SCE_STM_FDIR (0x1 << 12) /* directory */
+#define SCE_STM_ISREG(m) (((m) & SCE_STM_FMT) == SCE_STM_FREG)
+#define SCE_STM_ISDIR(m) (((m) & SCE_STM_FMT) == SCE_STM_FDIR)
+
+/* for SceMode */
+#define SCE_STM_RWU 00600
+#define SCE_STM_RU 00400
+
+/* for chstat cbit */
+#define SCE_CST_MODE 0x0001
+#define SCE_CST_ATTR 0x0000 /* not supported */
+#define SCE_CST_SIZE 0x0004
+#define SCE_CST_CT 0x0008
+#define SCE_CST_AT 0x0010
+#define SCE_CST_MT 0x0020
+
+/**
+ * See sceIoChstat(), sceIoGetstat(), sceIoChstatByFd(), sceIoGetstatByFd()
+ */
+typedef struct SceIoStat {
+ SceIoMode st_mode; //!< File access mode
+ unsigned int st_attr; //!< Device-specific attribute
+ SceOff st_size; //!< File size
+ SceDateTime st_ctime; //!< File creation time
+ SceDateTime st_atime; //!< File last accessed time
+ SceDateTime st_mtime; //!< File last modified time
+ unsigned int st_private[6]; //!< Reserved
+} SceIoStat;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DOLCESDK_PSP2COMMON_KERNEL_IOFILEMGR_STAT_H_ */