Annotation of researchv10no/libcbt/cbt.h, revision 1.1.1.1

1.1       root        1: #ifdef TEST
                      2: #define NDSZ   64
                      3: #else
                      4: #define NDSZ 1024/* for real systems (larger may be slower) */
                      5: #endif
                      6: #define MAXKLEN        (NDSZ/4)-8
                      7: #if MAXKLEN > 255
                      8: #undef MAXKLEN
                      9: #define MAXKLEN 255
                     10: #endif
                     11: #define MXHT   5
                     12: typedef long ndaddr;
                     13: /* for communication with users */
                     14: typedef struct {
                     15:        char *mdata;
                     16:        unsigned short mlen;
                     17: } mbuf;
                     18: typedef struct bfile {
                     19:        struct bfile *next;
                     20:        struct hdr *path[MXHT + 1];
                     21:        char height, advnc, rdwrt, flag[MXHT + 1];
                     22:        ndaddr loc[MXHT + 1];
                     23:        int tfd, dfd;
                     24:        char *fname, *altname;
                     25:        struct rdptr {
                     26:                struct dkey *rptr;      /* current dkey */
                     27:                short rnum;     /* its ordinal */
                     28:                char rpref[MAXKLEN];    /* first dcom bytes of its key */
                     29:        } rdptr;
                     30:        char fatal;                     /* this bfile can't be used */
                     31: } bfile;
                     32: extern bfile *bopen();
                     33: extern mbuf bkey();
                     34: 
                     35: #define BERROR         100             /* first btree value of errno */
                     36: #define BUTRAN         BERROR + 0      /* user caused tran abort */
                     37: #define BNOWRITE       BERROR + 1      /* not opened for writing */
                     38: #define BIOWRT         BERROR + 2      /* wrote short record */
                     39: #define BNOMEM         BERROR + 3      /* no mem from malloc */
                     40: #define BFATAL         BERROR + 4      /* last chance for user */
                     41: #define BTALL          BERROR + 5      /* tree becoming taller than MXHT */
                     42: #define BRDERR         BERROR + 6      /* read short record or read error */
                     43: #define BLASTE         BERROR + 7      /* one past last btree value of errno */
                     44: extern int     errno;
                     45: 
                     46: /* users can ignore the rest of this stuff */
                     47: /* keys in nodes */
                     48: typedef struct dkey {
                     49:        unsigned char dlen;     /* total size of structure */
                     50:        char dcom;              /* bytes in common with preceding */
                     51:        char dkey[MAXKLEN];     /* rest of key */
                     52: } dkey;
                     53: #define DKEYSZ 2       /* overhead in dkey */
                     54: /* node header */
                     55: typedef struct hdr {
                     56:        long hstamp;    /* for owning process */
                     57:        short kcnt;     /* keys in node */
                     58:        char htype;
                     59:        char hlev;
                     60: } hdr;
                     61: typedef struct {
                     62:        short tfree;    /* free bytes in node, at end for triv checking */
                     63: } trailer;
                     64: #define nfree(p)       ((trailer *)((char *)(p) + NDSZ - sizeof(trailer)))->tfree
                     65: #define SHARED 1
                     66: #define INDEX  2
                     67: #define READONLY       4
                     68: #define bf_type(b, t)  ((b)->path[0]->htype & (t))
                     69: #define treeonly(b)    bf_type(b, INDEX)
                     70: #define shared(b)      bf_type(b, SHARED)
                     71: #define readonly(b)    bf_type(b, READONLY)
                     72: /* disk addresses */
                     73: typedef struct {
                     74:        long lloc;
                     75:        unsigned short llen;
                     76: } lfaddr;
                     77: #define ndadr(b, j)    ((ndaddr *)((char *)(b) + NDSZ - sizeof(trailer)) - (j) - 1)
                     78: #define lfadr(b, j)    ((lfaddr *)((char *)(b) + NDSZ - sizeof(trailer)) - (j) - 1)
                     79: #define mustwrite(bf, n)       bf->flag[n]     /* for getincore */
                     80: /* node format:
                     81:  *     hdr, dkey, dkey, dkey, ..., space, adr, adrn, ..., adr0, trailer
                     82:  */
                     83: extern int     bdump;                  /* dump on first fatal error */
                     84: extern long    tranid, getlpid();      /* unique transaction id */
                     85: #ifndef EOF
                     86: #ifndef NULL
                     87: #define NULL   0
                     88: #endif
                     89: #define EOF    -1
                     90: #endif
                     91: #define NOTFOUND       0
                     92: #define FOUND          1
                     93: 
                     94: #define alloc(x)       (x *)malloc(sizeof(x))
                     95: #define stamped(b)     b->hstamp == tranid
                     96: 
                     97: #define        FNAMELEN        256
                     98: /*1000001111101111*/

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.