⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tfs.h

📁 完整的Bell实验室的嵌入式文件系统TFS
💻 H
字号:
/* tfs.h: *  Header file for TFS transactions, used by both application and monitor. *  *  General notice: *  This code is part of a boot-monitor package developed as a generic base *  platform for embedded system designs.  As such, it is likely to be *  distributed to various projects beyond the control of the original *  author.  Please notify the author of any enhancements made or bugs found *  so that all may benefit from the changes.  In addition, notification back *  to the author will allow the new user to pick up changes that may have *  been made by other users after this version of the code was distributed. * *  Note1: the majority of this code was edited with 4-space tabs. *  Note2: as more and more contributions are accepted, the term "author" *         is becoming a mis-representation of credit. * *  Original author:    Ed Sutter *  Email:              esutter@lucent.com *  Phone:              908-582-2351 */#ifndef _tfs_h#define _tfs_h#define TFSINFOSIZE     23      /* Max size of info string (mod4-1). */#ifndef TFSNAMESIZE             /* This specifies the maximum size of a file */#define TFSNAMESIZE     23      /* name that can be used in TFS. */#endif                          /* This MUST be some value mod4 - 1. */#ifndef TFS_CHANGELOG_FILE      /* Information used for change-log */#define TFS_CHANGELOG_SIZE  0   /* facility within tfs. */#define TFS_CHANGELOG_FILE  ".tfschlog"#endif#ifndef SYMFILE                 /* This specifies the default filename */#define SYMFILE     "symtbl"    /* used by the monitor for the symbol */#endif                          /* table. */#define MINUSRLEVEL     0       /* Minimum user level supported. */#define MAXUSRLEVEL     3       /* Maximum user level supported. */#ifndef TFS_RESERVED#define TFS_RESERVED    4       /* Number of "reserved" entries (ulong) */#endif                          /* in the TFS header. *//* Flags: */#define TFS_EXEC    0x00000001  /* 'e': Executable script. */#define TFS_BRUN    0x00000002  /* 'b': To be executed at boot. */#define TFS_QRYBRUN 0x00000004  /* 'B': To be executed at boot if */                                /*      query passes. */#define TFS_SYMLINK 0x00000008  /* 'l': Symbolic link file. */#define TFS_EBIN    0x00000010  /* 'E': Executable binary (coff/elf/a.out). */#define TFS_CPRS    0x00000040  /* 'c': File is compressed. */#define TFS_IPMOD   0x00000080  /* 'i': File is in-place modifiable. */#define TFS_UNREAD  0x00000100  /* 'u': File is not even readable if the */                                /*      user-level requirement is not met; */                                /*      else, it is read-only. */#define TFS_ULVLMSK 0x00000600  /*  User level mask defines 4 access levels: */#define TFS_ULVL0   0x00000000  /* '0'  level 0 */#define TFS_ULVL1   0x00000200  /* '1'  level 1 */#define TFS_ULVL2   0x00000400  /* '2'  level 2 */#define TFS_ULVL3   0x00000600  /* '3'  level 3 */#define TFS_NSTALE  0x00000800  /* File is NOT stale, invisible to user.                                 * When this bit is clear, the file is                                  * considered stale (see notes in tfsadd()).                                  * See notes in tfsclose() for this.                                 */#define TFS_ACTIVE  0x00008000  /* Used to indicate that file is not deleted. */#define TFS_ULVLMAX TFS_ULVL3#define TFS_USRLVL(f)   ((f->flags & TFS_ULVLMSK) >> 9)/* Open modes */#define TFS_RDONLY      0x00010000  /* File is opened for reading. */#define TFS_CREATE      0x00020000  /* File is to be created. Error if file */                                    /* with the same name already exists. */#define TFS_APPEND      0x00040000  /* Append to existing file.  If OR'ed */                                    /* with TFS_CREATE, then create if */                                    /* necessary. */#define TFS_ALLFFS      0x00080000  /* File is created with all FFs. */#define TFS_CREATERM    0x00100000  /* File is to be created. If file with */                                    /* same name already exists, then allow */                                    /* tfsadd() to remove it if necessary. *//* The function tfsrunrc() will search through the current file set and *//* if the file defined by TFS_RCFILE exists, it will be executed. *//* If this file exists, it will NOT be run by tfsrunboot(). */#define TFS_RCFILE      "monrc"/* Requests that can be made to tfsctrl(): */#define TFS_ERRMSG      1#define TFS_MEMUSE      2#define TFS_MEMDEAD     3#define TFS_DEFRAG      4#define TFS_TELL        5#define TFS_UNOPEN      7#define TFS_FATOB       8#define TFS_FBTOA       9#define TFS_MEMAVAIL    10#define TFS_TIMEFUNCS   11#define TFS_DOCOMMAND   12#define TFS_INITDEV     13#define TFS_CHECKDEV    14#define TFS_DEFRAGDEV   15#define TFS_DEFRAGOFF   16#define TFS_DEFRAGON    17#define TFS_HEADROOM    18#define TFS_FCOUNT      19/* struct tfshdr: *  It is in FLASH as part of the file system to record the attributes of *  the file at the time of creation. */struct tfshdr {    unsigned short  hdrsize;        /* Size of this header.                 */    unsigned short  hdrvrsn;        /* Header version #.                    */    long    filsize;                /* Size of the file.                    */    long    flags;                  /* Flags describing the file.           */    unsigned long filcrc;           /* 32 bit CRC of file.                  */    unsigned long hdrcrc;           /* 32 bit CRC of the header.            */    unsigned long   modtime;        /* Time when file was last modified.    */    struct  tfshdr  *next;          /* Pointer to next file in list.        */    char    name[TFSNAMESIZE+1];    /* Name of file.                        */    char    info[TFSINFOSIZE+1];    /* Miscellaneous info field.            */#if TFS_RESERVED    unsigned long   rsvd[TFS_RESERVED];#endif};#define TFSHDRSIZ   sizeof(struct tfshdr)/* TFS error returns. */#define TFS_OKAY                0#define TFSERR_NOFILE           -1#define TFSERR_NOSLOT           -2#define TFSERR_EOF              -3#define TFSERR_BADARG           -4#define TFSERR_NOTEXEC          -5#define TFSERR_BADCRC           -6#define TFSERR_FILEEXISTS       -7#define TFSERR_FLASHFAILURE     -8#define TFSERR_WRITEMAX         -9#define TFSERR_RDONLY           -10#define TFSERR_BADFD            -11#define TFSERR_BADHDR           -12#define TFSERR_CORRUPT          -13#define TFSERR_MEMFAIL          -14#define TFSERR_NOTIPMOD         -16#define TFSERR_MUTEXFAILURE     -17#define TFSERR_FLASHFULL        -18#define TFSERR_USERDENIED       -19#define TFSERR_NAMETOOBIG       -20#define TFSERR_FILEINUSE        -21#define TFSERR_SCRIPTINSUB      -22#define TFSERR_NOTAVAILABLE     -23#define TFSERR_BADFLAG          -24#define TFSERR_CLEANOFF         -25#define TFSERR_FLAKEYSOURCE     -26#define TFSERR_MIN              -100/* TFS seek options. */#define TFS_BEGIN       1#define TFS_CURRENT     2#define TFS_END         3/* Macros: */#define TFS_DELETED(fp)     (!((fp)->flags & TFS_ACTIVE))#define TFS_FILEEXISTS(fp)  ((fp)->flags & TFS_ACTIVE)#define TFS_ISCPRS(fp)      ((fp)->flags & TFS_CPRS)#define TFS_ISEXEC(fp)      ((fp)->flags & TFS_EXEC)#define TFS_ISBOOT(fp)      ((fp)->flags & TFS_BRUN)#define TFS_ISLINK(fp)      ((fp)->flags & TFS_SYMLINK)#define TFS_STALE(fp)       (!((fp)->flags & TFS_NSTALE))#define TFS_FLAGS(fp)       ((fp)->flags)#define TFS_NAME(fp)        ((fp)->name)#define TFS_SIZE(fp)        ((fp)->filsize)#define TFS_TIME(fp)        ((fp)->modtime)#define TFS_INFO(fp)        ((fp)->info)#define TFS_NEXT(fp)        ((fp)->next)#define TFS_CRC(fp)         ((fp)->filcrc)#define TFS_ENTRY(fp)       ((fp)->entry)#define TFS_BASE(fp)        ((char *)(fp)+(fp)->hdrsize)typedef struct tfshdr TFILE;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -