35void *pfsAllocMem(
int size)
42 mem = AllocSysMemory(ALLOC_FIRST, size, NULL);
51void pfsFreeMem(
void *buffer)
57 FreeSysMemory(buffer);
70 0, 7, 6, 5, 4, 3, 2000
73 for(i = 0; i < 20; i++)
79 if(ret!=0 && cdtime.
stat==0)
81 timeBuf.sec=btoi(cdtime.
second);
82 timeBuf.min=btoi(cdtime.
minute);
83 timeBuf.hour=btoi(cdtime.
hour);
84 timeBuf.day=btoi(cdtime.
day);
85 timeBuf.month=btoi(cdtime.
month & 0x7F);
86 timeBuf.year=btoi(cdtime.
year) + 2000;
89 if(!(cdtime.
stat & 0x80))
101 rawtime += (-9 * 60 * 60);
103 gmtime_s(&timeinfo, &rawtime);
105 gmtime_r(&rawtime, &timeinfo);
108 tm->sec = timeinfo.tm_sec;
109 tm->min = timeinfo.tm_min;
110 tm->hour = timeinfo.tm_hour;
111 tm->day = timeinfo.tm_mday;
112 tm->month = timeinfo.tm_mon + 1;
113 tm->year = timeinfo.tm_year + 1900;
123 if(pfsMount->blockDev->transfer(pfsMount->fd, superblock, 0, PFS_SUPER_SECTOR, 1,
124 PFS_IO_MODE_READ)==0)
128 case PFS_MODE_SET_FLAG:
129 superblock->pfsFsckStat|=stat;
131 case PFS_MODE_REMOVE_FLAG:
132 superblock->pfsFsckStat&=~stat;
135 return 0 < (superblock->pfsFsckStat & stat);
137 pfsMount->blockDev->transfer(pfsMount->fd, superblock, 0, PFS_SUPER_SECTOR, 1,
139 pfsMount->blockDev->flushCache(pfsMount->fd);
144void pfsPrintBitmap(
const u32 *bitmap) {
146 char a[48+1], b[16+1];
149 for (i=0; i < 32; i++){
151 for (j=0; j < 16; j++){
152 const char *c=(
const char*)bitmap+j+i*16;
154 sprintf(a+j*3,
"%02x ", *c);
155 b[j] = ((*c>=0) && (isgraph(*c))) ?
158 PFS_PRINTF(
"%s%s\n", a, b);
162u32 pfsGetScale(u32 num, u32 size)
166 while((size << scale) != num)
172u32 pfsFixIndex(u32 index)
174 if(index < PFS_INODE_MAX_BLOCKS)
177 index -= PFS_INODE_MAX_BLOCKS;
184static int pfsHddTransfer(
int fd,
void *buffer, u32 sub, u32 sector,
186static u32 pfsHddGetSubCount(
int fd);
187static u32 pfsHddGetPartSize(
int fd, u32 sub);
188static void pfsHddSetPartError(
int fd);
189static int pfsHddFlushCache(
int fd);
191#ifdef PFS_SUPPORT_BHDD
192#define NUM_SUPPORTED_DEVICES 2
194#define NUM_SUPPORTED_DEVICES 1
205#ifdef PFS_SUPPORT_BHDD
225 while(name[0] ==
' ')
228 end = strchr(name,
':');
230 PFS_PRINTF(PFS_DRV_NAME
": Error: Unknown block device '%s'\n", name);
234 len = (u8*)end - (u8*)name;
235 strncpy(devname, name, len);
241 while(!(isdigit(tmp[0])))
245 for(i = 0; i < NUM_SUPPORTED_DEVICES; i++)
246 if(!strcmp(pfsBlockDeviceCallTable[i].devName, devname))
247 return &pfsBlockDeviceCallTable[i];
252static int pfsHddTransfer(
int fd,
void *buffer, u32 sub, u32 sector,
266static u32 pfsHddGetSubCount(
int fd)
268 return iomanX_ioctl2(fd, HIOCNSUB, NULL, 0, NULL, 0);
271static u32 pfsHddGetPartSize(
int fd, u32 sub)
273 return iomanX_ioctl2(fd,
HIOCGETSIZE, &sub, 0, NULL, 0);
276static void pfsHddSetPartError(
int fd)
281static int pfsHddFlushCache(
int fd)
283 return iomanX_ioctl2(fd,HIOCFLUSH, NULL, 0, NULL, 0);
int CpuResumeIntr(int state)
int CpuSuspendIntr(int *state)
int sceCdReadClock(sceCdCLOCK *clock)