34#include <effs_fat/fat.h>
46 extern unsigned long drvbldnum;
47 extern FN_MUTEX_TYPE fat_gmutex;
49 extern int fn_setlasterror(F_MULTI *fm,
int errorcode);
50 extern void fn_setlasterror_noret(F_MULTI *fm,
int errorcode);
51 extern int fn_createdriver(F_MULTI *fm, F_DRIVER **driver, F_DRIVERINIT driver_init,
unsigned long driver_param);
52 extern int fn_releasedriver(F_MULTI *fm, F_DRIVER *driver);
53 extern int fn_createpartition(F_MULTI *fm, F_DRIVER *driver,
int parnum,
const F_PARTITION *par);
54 extern int fn_initvolume(F_MULTI *fm,
int drvnumber, F_DRIVERINIT driver_init,
unsigned long driver_param);
55 extern int fn_initvolumepartition(F_MULTI *fm,
int drvnumber, F_DRIVER *driver,
int partition);
56 extern int fn_ftruncate(F_MULTI *fm, FN_FILE *filehandle,
unsigned long length);
57 extern int fn_getpartition(F_DRIVER *driver,
int parnum, F_PARTITION *par);
59 extern int _f_readsector(F_VOLUME *vi,
void *data,
unsigned long sector,
int cnt);
60 extern int _f_writesector(F_VOLUME *vi,
void *data,
unsigned long sector,
int cnt);
61 extern int _f_getclustervalue(F_VOLUME *vi,
unsigned long cluster,
unsigned long *pvalue);
62 extern void _f_clustertopos(
const F_VOLUME *vi,
unsigned long cluster, F_POS *pos);
63 extern unsigned long _f_getdecluster(
const F_VOLUME *vi, F_DIRENTRY *de);
64 extern int _f_checkstatus(
const F_VOLUME *vi,
long *pstatus);
65 extern int _f_getvolume(F_MULTI *fm,
int drivenum, F_VOLUME **pvi);
66 extern unsigned short _f_get16bitl(
void *ptr);
67 extern unsigned long _f_get32bitl(
void *ptr);
68 extern void _f_set16bitl(
void *ptr,
unsigned short num);
69 extern void _f_set32bitl(
void *ptr,
unsigned long num);
70 extern int _f_checklocked(
long drvnum,
const F_POS *pos);
71 extern int _f_checkreadlocked(F_VOLUME *vi,
long drvnum, F_POS *pos, FN_FILEINT **fapp);
72 extern int _f_checkappendlocked(
long drvnum,
const F_POS *pos, FN_FILEINT *ofile);
73 extern void _f_initentry(F_DIRENTRY *de,
const char *name,
const char *ext);
74 extern int _f_alloccluster(F_VOLUME *vi,
unsigned long *pcluster);
75 extern int _f_dobadblock(F_VOLUME *vi, FN_FILEINT *f);
76 extern int _f_setclustervalue(F_VOLUME *vi,
unsigned long cluster,
unsigned long data);
77 extern int _f_writefatsector(F_VOLUME *vi);
78 extern void _f_setdecluster(
const F_VOLUME *vi, F_DIRENTRY *de,
unsigned long cluster);
79 extern int _f_fseek(F_VOLUME *vi, F_MULTI *fm, FN_FILEINT *f,
unsigned long offset);
80 extern int _f_getcurrsector(F_VOLUME *vi, FN_FILEINT *f,
char *ptr,
unsigned int *cnt);
81 extern int _f_removechain(F_VOLUME *vi,
unsigned long cluster);
82 extern FN_FILEINT *_f_check_handle(FN_FILE *filehandle);
83 extern int _f_writedirsector(F_VOLUME *vi);
84 extern unsigned long _f_getmaxcluster(
const F_VOLUME *vi);
85 extern int _f_writezeros(F_VOLUME *vi, F_MULTI *fm, FN_FILEINT *f,
unsigned long num);
86 extern void _f_syncfiles(F_VOLUME *vi, F_MULTI *fm,
const FN_FILEINT *file);
87 int _f_findopensize(
unsigned long *ofsize,
int drivenum, F_POS *pos);
90 extern void _fn_removeseekpos(FN_FILEINT *f);
91 extern void _fn_updateseekpos(FN_FILEINT *f);
92 extern void _fn_initseekdivisor(FN_FILEINT *f, F_VOLUME *vi);
96 extern int _f_fatcache_flush(F_VOLUME *vi,
int clear);
99 extern int _f_mutex_get(F_MULTI *fm, F_VOLUME *vi);
100 extern void _f_mutex_put(F_MULTI *fm);
104 extern F_MULTI *g_multi[FN_MAXTASK];
106 extern F_MULTI g_multi[FN_MAXTASK];
110 extern int fnGetTask(F_MULTI **fm);
113 extern void *_f_memset(
void *,
int,
unsigned long);
114 extern void *_f_memcpy(
void *,
void *,
unsigned long);