blob: 78c07c8085b9cef39edc2f9fc1e3e60abc23651e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include "PRinternal/macros.h"
#include "PR/os_internal.h"
#include "PRinternal/controller.h"
s32 osPfsFreeBlocks(OSPfs* pfs, s32* bytes_not_used) {
int j;
int pages = 0;
__OSInode inode;
s32 ret = 0;
u8 bank;
int offset;
PFS_CHECK_STATUS();
#if BUILD_VERSION >= VERSION_J
ERRCK(__osCheckId(pfs));
#else
PFS_CHECK_ID();
#endif
for (bank = 0; bank < pfs->banks; bank++) {
ERRCK(__osPfsRWInode(pfs, &inode, PFS_READ, bank));
offset = ((bank > 0) ? 1 : pfs->inode_start_page);
for (j = offset; j < ARRLEN(inode.inode_page); j++) {
if (inode.inode_page[j].ipage == PFS_PAGE_NOT_USED) {
pages++;
}
}
}
*bytes_not_used = pages * PFS_ONE_PAGE * BLOCKSIZE;
return 0;
}
|