diff options
Diffstat (limited to 'include/nandfs.h')
| -rw-r--r-- | include/nandfs.h | 96 |
1 files changed, 49 insertions, 47 deletions
diff --git a/include/nandfs.h b/include/nandfs.h index 66842f6b..1b6eb54b 100644 --- a/include/nandfs.h +++ b/include/nandfs.h @@ -1,5 +1,10 @@ #pragma src "/usr/inferno/libnandfs" +typedef struct Nandfs Nandfs; +typedef struct NandfsTags NandfsTags; + +#pragma incomplete Nandfs + enum { NandfsL2PageSize = 9, NandfsPageSize = 1 << NandfsL2PageSize, @@ -11,62 +16,59 @@ enum { NandfsNeraseMask = ((1 << NandfsNeraseBits) - 1), }; -typedef struct Nandfs Nandfs; - -typedef struct NandfsTags { +struct NandfsTags { ulong path; // 26 bits ulong nerase; // 18 bits uchar tag; // 8 bits uchar magic; // 8 bits -} NandfsTags; +}; -char *nandfsinit(void *magic, long rawsize, long rawblocksize, - char *(*read)(void *magic, void *buf, long nbytes, ulong offset), - char *(*write)(void *magic, void *buf, long nbytes, ulong offset), - char *(*erase)(void *magic, long blockaddr), - char *(*sync)(void *magic), - LogfsLowLevel **llp); -void nandfsfree(Nandfs *nandfs); -char *nandfsreadpageauxiliary(Nandfs *nandfs, NandfsTags *tags, long block, int page, int correct, LogfsLowLevelReadResult *result); -void nandfssetmagic(Nandfs *nandfs, void *magic); -char *nandfswritepageauxiliary(Nandfs *nandfs, NandfsTags *tags, long absblock, int page); -char *nandfsreadpage(Nandfs *nandfs, void *buf, NandfsTags *tags, long block, int page, int reportbad, LogfsLowLevelReadResult *result); -char *nandfsreadpagerange(Nandfs *nandfs, void *buf, long block, int page, int offset, int count, LogfsLowLevelReadResult *result); -char *nandfsupdatepage(Nandfs *nandfs, void *buf, ulong path, uchar tag, long block, int page); +char *nandfsinit(void*, long, long, char *(*)(void*, void*, long, ulong), + char *(*)(void*, void*, long, ulong), + char *(*)(void*, long), + char *(*)(void*), + LogfsLowLevel **); +void nandfsfree(Nandfs*); +char *nandfsreadpageauxiliary(Nandfs*, NandfsTags*, long, int, int, LogfsLowLevelReadResult*); +void nandfssetmagic(Nandfs*, void*); +char *nandfswritepageauxiliary(Nandfs*, NandfsTags*, long, int); +char *nandfsreadpage(Nandfs*, void*, NandfsTags*, long, int, int, LogfsLowLevelReadResult*); +char *nandfsreadpagerange(Nandfs*, void*, long, int, int, int, LogfsLowLevelReadResult*); +char *nandfsupdatepage(Nandfs*, void*, ulong, uchar, long, int); -long nandfsgetnerase(Nandfs *nandfs, long block); -void nandfssetnerase(Nandfs *nandfs, long block, ulong nerase); -void nandfssetpartial(Nandfs *nandfs, long block, int partial); +long nandfsgetnerase(Nandfs*, long); +void nandfssetnerase(Nandfs*, long, ulong); +void nandfssetpartial(Nandfs*, long, int); -char *nandfsmarkabsblockbad(Nandfs *nandfs, long absblock); +char *nandfsmarkabsblockbad(Nandfs*, long); /* low level interface functions */ -char *nandfsopen(Nandfs *nandfs, long base, long limit, int trace, int xcount, long *data); -short nandfsgettag(Nandfs *nandfs, long block); -void nandfssettag(Nandfs *nandfs, long block, short tag); -long nandfsgetpath(Nandfs *nandfs, long block); -void nandfssetpath(Nandfs *nandfs, long block, ulong path); -int nandfsgetblockpartialformatstatus(Nandfs *nandfs, long block); -long nandfsfindfreeblock(Nandfs *nandfs, long *freeblocksp); -char *nandfsreadblock(Nandfs *nandfs, void *buf, long block, LogfsLowLevelReadResult *blocke); -char *nandfswriteblock(Nandfs *nandfs, void *buf, uchar tag, ulong path, int xcount, long *data, long block); -char *nandfswritepage(Nandfs *nandfs, void *buf, long block, int page); -char *nandfseraseblock(Nandfs *nandfs, long block, void **llsavep, int *markedbad); -char *nandfsformatblock(Nandfs *nandfs, long block, uchar tag, ulong path, long baseblock, long sizeinblocks, int xcount, long *xdata, void *llsave, int *markedbad); -char *nandfsreformatblock(Nandfs *nandfs, long block, uchar tag, ulong path, int xcount, long *xdata, void *llsave, int *markedbad); -char *nandfsmarkblockbad(Nandfs *nandfs, long block); -int nandfsgetpagesize(Nandfs *nandfs); -int nandfsgetpagesperblock(Nandfs *nandfs); -long nandfsgetblocks(Nandfs *nandfs); -long nandfsgetbaseblock(Nandfs *nandfs); -int nandfsgetblocksize(Nandfs *nandfs); -ulong nandfscalcrawaddress(Nandfs *nandfs, long pblock, int dataoffset); -char *nandfsgetblockstatus(Nandfs *nandfs, long block, int *magicfound, void **llsave, LogfsLowLevelReadResult *result); -int nandfscalcformat(Nandfs *nandfs, long base, long limit, long bootsize, long *baseblock, long *limitblock, long *bootblocks); -int nandfsgetopenstatus(Nandfs *nandfs); -char *nandfssync(Nandfs *nandfs); +char *nandfsopen(Nandfs*, long, long, int, int, long*); +short nandfsgettag(Nandfs*, long); +void nandfssettag(Nandfs*, long, short); +long nandfsgetpath(Nandfs*, long); +void nandfssetpath(Nandfs*, long, ulong); +int nandfsgetblockpartialformatstatus(Nandfs*, long); +long nandfsfindfreeblock(Nandfs*, long*); +char *nandfsreadblock(Nandfs*, void*, long, LogfsLowLevelReadResult*); +char *nandfswriteblock(Nandfs*, void*, uchar, ulong, int, long*, long); +char *nandfswritepage(Nandfs*, void*, long, int); +char *nandfseraseblock(Nandfs*, long, void **, int*); +char *nandfsformatblock(Nandfs*, long, uchar, ulong, long, long, int, long*, void*, int*); +char *nandfsreformatblock(Nandfs*, long, uchar, ulong, int, long*, void*, int*); +char *nandfsmarkblockbad(Nandfs*, long); +int nandfsgetpagesize(Nandfs*); +int nandfsgetpagesperblock(Nandfs*); +long nandfsgetblocks(Nandfs*); +long nandfsgetbaseblock(Nandfs*); +int nandfsgetblocksize(Nandfs*); +ulong nandfscalcrawaddress(Nandfs*, long, int); +char *nandfsgetblockstatus(Nandfs*, long, int*, void **, LogfsLowLevelReadResult*); +int nandfscalcformat(Nandfs*, long, long, long, long*, long*, long*); +int nandfsgetopenstatus(Nandfs*); +char *nandfssync(Nandfs*); /* defined in environment */ -void *nandfsrealloc(void *p, ulong size); -void nandfsfreemem(void *p); +void *nandfsrealloc(void*, ulong); +void nandfsfreemem(void*); |
