18#define PFS_OPT_H "pfs-opt.h"
24#define PFS_BLOCKSIZE 0x2000
25#define PFS_SUPER_MAGIC 0x50465300
26#define PFS_JOUNRNAL_MAGIC 0x5046534C
27#define PFS_SEGD_MAGIC 0x53454744
28#define PFS_SEGI_MAGIC 0x53454749
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
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
227extern int pfsCheckZoneSize(u32 zone_size);
228#ifdef PFS_SUPPORT_BHDD
229extern int pfsCheckExtendedZoneSize(u32 zone_size);
231extern u32 pfsGetBitmapSizeSectors(
int zoneScale, u32 partSize);
232extern u32 pfsGetBitmapSizeBlocks(
int scale, u32 mainsize);
233extern int pfsFormatSub(
pfs_block_device_t *blockDev,
int fd, u32 sub, u32 reserved, u32 scale, u32 fragment);
234extern int pfsFormat(
pfs_block_device_t *blockDev,
int fd,
int zonesize,
int fragment);
236extern int pfsMountSuperBlock(
pfs_mount_t *pfsMount);
245extern int pfsCacheTransfer(
pfs_cache_t* clink,
int mode);
246extern void pfsCacheFlushAllDirty(
pfs_mount_t *pfsMount);
249extern pfs_cache_t *pfsCacheAllocClean(
int *result);
250extern int pfsCacheIsFull(
void);
251extern int pfsCacheInit(u32 numBuf, u32 bufSize);
252extern int pfsCacheDeinit(
void);
254extern 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;
272extern void pfsBitmapAllocFree(
pfs_cache_t *clink, u32 operation, u32 subpart, u32 chunk, u32 index, u32 _bit, u32
count);
277extern int pfsBitmapCalcFreeZones(
pfs_mount_t *pfsMount,
int sub);
279extern void pfsBitmapFreeInodeBlocks(
pfs_cache_t *clink);
310extern int pfsCheckAccess(
pfs_cache_t *clink,
int flags);
311extern char* pfsSplitPath(
char *filename,
char *path,
int *result);
314extern int pfsAllocZones(
pfs_cache_t *clink,
int msize,
int mode);
325extern int pfsInodeSync(
pfs_blockpos_t *blockpos, u64 size, u32 used_segments);
332extern int pfsJournalChecksum(
void *header);
336extern int pfsJournalRestore(
pfs_mount_t *pfsMount);
344extern void *pfsAllocMem(
int size);
345extern void pfsFreeMem(
void *buffer);
347extern void pfsPrintBitmap(
const u32 *bitmap);
350extern u32 pfsGetScale(u32 num, u32 size);
351extern u32 pfsFixIndex(u32 index);
u32 count
start sector of fragmented bd/file