Files
vitasdk-odin/Fios2/types.odin
T

89 lines
2.3 KiB
Odin
Raw Normal View History

2024-05-11 23:24:13 +02:00
package fios2
import "core:c"
import sce "../common"
SCE_FIOS2_OVERLAY_PATH_SIZE :: (292)
SCE_FIOS2_OVERLAY_PATH_MAX_LENGTH :: (SCE_FIOS2_OVERLAY_PATH_SIZE - 1)
SceFiosKernelOverlayDH :: c.int32_t
SceFiosKernelOverlayID :: c.int32_t
SceFiosOverlayID :: c.int32_t
// missing structs
SceFiosKernelOverlay :: struct{}
SceFiosNativeStat :: struct{}
SceFiosNativeDirEntry :: struct{}
SceFiosDHOpenSyncSyscallArgs :: struct {
to_order: sce.UInt8,
padding: [2]c.int,
}
#assert(size_of(SceFiosDHOpenSyncSyscallArgs) == 0xC)
SceFiosGetListSyscallArgs :: struct {
out_ids: ^SceFiosKernelOverlayID,
data_0x04: c.int,
data_0x08: c.int,
data_0x0C: sce.Size,
data_0x10: c.int,
data_0x14: c.int,
}
when size_of(rawptr) == 4 {
#assert(size_of(SceFiosGetListSyscallArgs) == 0x18)
}
SceFiosResolveSyncSyscallArgs :: struct {
out_path: cstring,
data_0x04: c.int,
data_0x08: c.int,
data_0x0C: c.int,
data_0x10: c.int,
data_0x14: c.int,
}
when size_of(rawptr) == 4 {
#assert(size_of(SceFiosResolveSyncSyscallArgs) == 0x18)
}
SceFiosResolveWithRangeSyncSyscallArgs :: struct {
out_path: cstring,
data_0x04: c.int,
data_0x08: sce.UInt8,
data_0x09: sce.UInt8,
data_0x0C: c.int,
data_0x10: c.int,
data_0x14: c.int,
}
when size_of(rawptr) == 4 {
#assert(size_of(SceFiosResolveWithRangeSyncSyscallArgs) == 0x18)
}
SceFiosOverlayType :: enum c.int {
// src replaces dst. All accesses to dst are redirected to src.
OPAQUE = 0,
// src merges with dst. Reads check src first, then dst. Writes go to dst.
TRANSLUCENT = 1,
// src merges with dst. Reads check both src and dst, and use whichever has the most recent modification time.
// If both src and dst have the same modification time, dst is used.
// If no file exists at src or dst, dst is used; if no file exists at dst, but a file exists at src, src is used. Writes go to dst.
NEWER = 2,
// src merges with dst. Reads check src first, then dst. Writes go to src.
WRITABLE = 3
}
SceFiosOverlay :: struct {
type: c.uint8_t, // see SceFiosOverlayType
order: c.uint8_t,
dst_len: c.uint16_t,
src_len: c.uint16_t,
unk2: c.uint16_t,
pid: sce.UID,
id: SceFiosOverlayID,
dst: [SCE_FIOS2_OVERLAY_PATH_SIZE]c.char,
src: [SCE_FIOS2_OVERLAY_PATH_SIZE]c.char, // src path replaces dst path based on type policy
}
#assert(size_of(SceFiosOverlay) == 0x258)