18 #define PFS_OPT_H "pfs-opt.h"
24 #define PFS_BLOCKSIZE 0x2000
25 #define PFS_SUPER_MAGIC 0x50465300 // "PFS\0" aka Playstation Filesystem
26 #define PFS_JOUNRNAL_MAGIC 0x5046534C // "PFSL" aka PFS Log
27 #define PFS_SEGD_MAGIC 0x53454744 // "SEGD" aka segment descriptor direct
28 #define PFS_SEGI_MAGIC 0x53454749 // "SEGI" aka segment descriptor indirect
29 #define PFS_MAX_SUBPARTS 64
30 #define PFS_NAME_LEN 255
31 #define PFS_FORMAT_VERSION 3
32 #define PFS_INODE_MAX_BLOCKS 114
35 #define PFS_FIO_ATTR_READABLE 0x0001
36 #define PFS_FIO_ATTR_WRITEABLE 0x0002
37 #define PFS_FIO_ATTR_EXECUTABLE 0x0004
38 #define PFS_FIO_ATTR_COPYPROTECT 0x0008
39 #define PFS_FIO_ATTR_UNK0010 0x0010
40 #define PFS_FIO_ATTR_SUBDIR 0x0020
41 #define PFS_FIO_ATTR_UNK0040 0x0040
42 #define PFS_FIO_ATTR_CLOSED 0x0080
43 #define PFS_FIO_ATTR_UNK0100 0x0100
44 #define PFS_FIO_ATTR_UNK0200 0x0200
45 #define PFS_FIO_ATTR_UNK0400 0x0400
46 #define PFS_FIO_ATTR_PDA 0x0800
47 #define PFS_FIO_ATTR_PSX 0x1000
48 #define PFS_FIO_ATTR_UNK2000 0x2000
49 #define PFS_FIO_ATTR_HIDDEN 0x4000
52 #define PFS_CACHE_FLAG_DIRTY 0x01
53 #define PFS_CACHE_FLAG_NOLOAD 0x02
54 #define PFS_CACHE_FLAG_MASKSTATUS 0x0F
57 #define PFS_CACHE_FLAG_NOTHING 0x00
58 #define PFS_CACHE_FLAG_SEGD 0x10
59 #define PFS_CACHE_FLAG_SEGI 0x20
60 #define PFS_CACHE_FLAG_BITMAP 0x40
61 #define PFS_CACHE_FLAG_MASKTYPE 0xF0
64 #define PFS_FSCK_STAT_OK 0x00
65 #define PFS_FSCK_STAT_WRITE_ERROR 0x01
66 #define PFS_FSCK_STAT_ERRORS_FIXED 0x02
69 #define PFS_MODE_SET_FLAG 0x00
70 #define PFS_MODE_REMOVE_FLAG 0x01
71 #define PFS_MODE_CHECK_FLAG 0x02
83 #define PFS_UID 0xFFFF
84 #define PFS_GID 0xFFFF
171 int (*transfer)(
int fd,
void *buffer, u32 sub, u32 sector, u32 size, u32 mode);
172 u32 (*getSubNumber)(
int fd);
173 u32 (*getSize)(
int fd, u32 sub);
174 void (*setPartitionError)(
int fd);
175 int (*flushCache)(
int fd);
224 #define PFS_SUPER_SECTOR 8192
225 #define PFS_SUPER_BACKUP_SECTOR 8193
227 extern int pfsCheckZoneSize(u32 zone_size);
228 #ifdef PFS_SUPPORT_BHDD
229 extern int pfsCheckExtendedZoneSize(u32 zone_size);
231 extern u32 pfsGetBitmapSizeSectors(
int zoneScale, u32 partSize);
232 extern u32 pfsGetBitmapSizeBlocks(
int scale, u32 mainsize);
233 extern int pfsFormatSub(
pfs_block_device_t *blockDev,
int fd, u32 sub, u32 reserved, u32 scale, u32 fragment);
234 extern int pfsFormat(
pfs_block_device_t *blockDev,
int fd,
int zonesize,
int fragment);
236 extern int pfsMountSuperBlock(
pfs_mount_t *pfsMount);
245 extern int pfsCacheTransfer(
pfs_cache_t* clink,
int mode);
246 extern void pfsCacheFlushAllDirty(
pfs_mount_t *pfsMount);
249 extern pfs_cache_t *pfsCacheAllocClean(
int *result);
250 extern int pfsCacheIsFull(
void);
251 extern int pfsCacheInit(u32 numBuf, u32 bufSize);
252 extern int pfsCacheDeinit(
void);
254 extern void pfsCacheMarkClean(
const pfs_mount_t *pfsMount, u32 subpart, u32 blockStart, u32 blockEnd);
259 #define PFS_BITMAP_ALLOC 0
260 #define PFS_BITMAP_FREE 1
268 u32 partitionRemainder;
272 extern void pfsBitmapAllocFree(
pfs_cache_t *clink, u32 operation, u32 subpart, u32 chunk, u32 index, u32 _bit, u32
count);
277 extern int pfsBitmapCalcFreeZones(
pfs_mount_t *pfsMount,
int sub);
279 extern void pfsBitmapFreeInodeBlocks(
pfs_cache_t *clink);
301 extern int pfsCheckDirForFiles(
pfs_cache_t *clink);
310 extern int pfsCheckAccess(
pfs_cache_t *clink,
int flags);
311 extern char* pfsSplitPath(
char *filename,
char *path,
int *result);
314 extern int pfsAllocZones(
pfs_cache_t *clink,
int msize,
int mode);
325 extern int pfsInodeSync(
pfs_blockpos_t *blockpos, u64 size, u32 used_segments);
332 extern int pfsJournalChecksum(
void *header);
336 extern int pfsJournalRestore(
pfs_mount_t *pfsMount);
344 extern void *pfsAllocMem(
int size);
345 extern void pfsFreeMem(
void *buffer);
347 extern void pfsPrintBitmap(
const u32 *bitmap);
350 extern u32 pfsGetScale(u32 num, u32 size);
351 extern u32 pfsFixIndex(u32 index);