📄 flashfs.h
字号:
/* * Journal Based Flash Entrysystem. */enum{// sector header MAGSIZE = 4, MAXHDR = MAGSIZE+3+3, MAGIC0 = 'R', MAGIC1 = 'O', MAGIC2 = 'O', FFSVERS = '0',// transactions FT_create = 'G', FT_FCREATE0 = 'C', FT_FCREATE1 = 'E', FT_DCREATE0 = 'D', FT_DCREATE1 = 'F', FT_chmod = 'H', FT_CHMOD0 = 'M', FT_CHMOD1 = 'O', FT_REMOVE = 'R', FT_WRITE = 'W', FT_AWRITE = 'A', FT_trunc = 'I', FT_TRUNC0 = 'T', FT_TRUNC1 = 'V', FT_SUMMARY = 'S', FT_SUMBEG = 'B', FT_SUMEND = 'Z', MAXFSIZE = 1 << 21, MAXNSIZE = 28, Ncreate = 1+1+3*3+MAXNSIZE+1, Nchmod = 1+1+2*3, Nremove = 1+3, Nwrite = 1+4*3, Ntrunc = 1+1+4*3+MAXNSIZE+1, Nsumbeg = 1+3, Nmax = Ncreate, Nsum = 2*(1+3), Nfree = 3, HBITS = 5, HSIZE = 1 << HBITS, HMASK = HSIZE - 1, NOTIME = 0xFFFFFFFF, WRSIZE = 4*1024,};typedef struct Extent Extent;typedef struct Exts Exts;typedef struct Entry Entry;typedef struct Dirr Dirr;typedef struct Jrec Jrec;typedef struct Renum Renum;struct Extent{ int sect; ulong addr; ulong off; ulong size; Extent* next; Extent* prev;};struct Exts{ Extent* head; Extent* tail;};struct Entry{ int ref; char* name; ulong fnum; ulong mode; ulong mnum; ulong mtime; ulong size; union { struct { Entry** htab; Entry* files; Dirr* readers; }; struct { Exts gen[2]; }; }; Entry* parent; Entry* hnext; Entry* hprev; Entry* fnext; Entry* fprev;};struct Dirr{ Entry* dir; Entry* cur; Dirr* next; Dirr* prev; ulong offset;};struct Jrec{ int type; ulong mode; ulong fnum; ulong mnum; ulong tnum; ulong mtime; ulong parent; ulong size; ulong offset; ulong seq; char name[MAXNSIZE+2];};struct Renum{ int old; int new;};extern void initdata(char*, int);extern void clearsect(int);extern void readdata(int, void*, ulong, ulong);extern int writedata(int, int, void*, ulong, ulong);extern int getc3(uchar*, ulong*);extern int putc3(uchar*, ulong);extern ulong get4(uchar*);extern void put4(uchar*, ulong);extern int convM2J(Jrec*, uchar*);extern int convJ2M(Jrec*, uchar*);extern void loadfs(int);extern char* need(int bytes);extern void put(Jrec*, int);extern void putw(Jrec*, int, Extent *x, void*);extern int Jconv(Fmt*);extern ulong now(void);extern void serve(char*);#pragma varargck type "J" Jrec*extern void einit(void);extern void edump(void);extern Entry* elookup(ulong);extern Extent* esum(Entry*, int, ulong, int*);extern void edestroy(Entry*);extern Entry* ecreate(Entry*, char*, ulong, ulong, ulong, char**);extern char* eremove(Entry*);extern Entry* ewalk(Entry*, char*, char**);extern void etrunc(Entry*, ulong, ulong);extern ulong echmod(Entry*, ulong, ulong);extern ulong eread(Entry*, int, void*, ulong, ulong);extern void ewrite(Entry*, Extent *, int, ulong);extern Qid eqid(Entry*);extern void estat(Entry*, Dir*, int);extern Dirr* ediropen(Entry*);extern int edirread(Dirr*, char*, long);extern void edirclose(Dirr*);extern void erenum(Renum*);extern char Edirnotempty[];extern char Eexists[];extern char Eisdir[];extern char Enonexist[];extern char Enotdir[];extern char Eperm[];extern char Erofs[];extern ulong sectsize;extern ulong nsects;extern uchar* sectbuff;extern Entry *root;extern int readonly;extern ulong delta;extern int eparity;extern uchar magic[];extern ulong used;extern ulong limit;extern ulong maxwrite;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -