Annotation of researchv10no/libc/fio/tstsk.c, revision 1.1

1.1     ! root        1: #include       <fio.h>
        !             2: #include       <libc.h>
        !             3: 
        !             4: #define        TMP     "/tmp/tstsk"
        !             5: #define        FN(x)   (unsigned char)((x&0xFF)^(x/251))
        !             6: 
        !             7: main(argc, argv)
        !             8:        char **argv;
        !             9: {
        !            10:        register n, c, k;
        !            11:        int len, fd, cd;
        !            12:        char *b1, *b2, *p;
        !            13: 
        !            14:        if(argc != 1){
        !            15:                Fprint(2, "Usage: tstsk\n");
        !            16:                exit(1);
        !            17:        }
        !            18:        len = 1000000;
        !            19:        if(sizeof(int) == 2)
        !            20:                len &= 0x7FFF;
        !            21:        if((fd = creat(TMP, 0666)) < 0){
        !            22:                perror(TMP);    
        !            23:                exit(1);
        !            24:        }
        !            25:        close(fd);
        !            26:        if((fd = open(TMP, 2)) < 0){
        !            27:                perror(TMP);    
        !            28:                exit(1);
        !            29:        }
        !            30:        unlink(TMP);
        !            31:        if((b2 = malloc(len)) == 0){
        !            32:                Fprint(2, "malloc(%d) failed\n", len);
        !            33:                exit(1);
        !            34:        }
        !            35:        for(n = 0, p = b2; n < len; n++)
        !            36:                *p++ = FN(n);
        !            37:        if(write(fd, b2, len) != len){
        !            38:                perror("write");
        !            39:                exit(1);
        !            40:        }
        !            41:        lseek(fd, 0L, 0);
        !            42:        Finit(fd, (char *)0);
        !            43:        for(n = 0; n < 500; n++){
        !            44:                k = nrand(len);
        !            45:                c = nrand(sizeof(Fbuffer))+100;
        !            46:                if(k+c > len) c = len-k;
        !            47:                test(fd, k, c, n);
        !            48:        }
        !            49: done:
        !            50:        Fprint(2, "tstsk: %d bytes, %d seeks, succeeded\n", len, n);
        !            51:        exit(0);
        !            52: }
        !            53: 
        !            54: test(fd, off, n, count)
        !            55: {
        !            56:        long offset;
        !            57:        int c;
        !            58: 
        !            59:        offset = off;
        !            60:        if(Fseek(fd, offset, 0) != offset){
        !            61:                fprint(2, "fseek(%ld) != %ld!!\n", offset, offset);
        !            62:                exit(1);
        !            63:        }
        !            64:        while(n-- > 0){
        !            65:                if((c = Fgetc(fd)) != FN(offset)){
        !            66:                        fprint(2, "tst %d: char mismatch; %ld: %x, expected %x\n",
        !            67:                                count, offset, c, FN(offset));
        !            68:                        dumpfb(fd);
        !            69:                        exit(1);
        !            70:                }
        !            71:                offset++;
        !            72:        }
        !            73: }
        !            74: 
        !            75: dumpfb(fd)
        !            76: {
        !            77:        register Fbuffer *f = Ffb[fd];
        !            78:        register unsigned char *c;
        !            79:        register long off;
        !            80:        int i;
        !            81: 
        !            82:        fprint(2, "buf@%ld: next=%ld end=%ld lnext=%ld buf=%ld offset=%ld\n",
        !            83:                f, f->next, f->end, f->lnext, f->buf, f->offset);
        !            84:        off = f->offset - (f->end - f->buf);
        !            85:        for(c = f->buf; c < &f->buf[64]; ){
        !            86:                fprint(2, "%7ld:", off);
        !            87:                for(i = 0; i < 16; i++, off++)
        !            88:                        fprint(2, " %2x", *c++);
        !            89:                fprint(2, "\n");
        !            90:        }
        !            91: }

unix.superglobalmegacorp.com

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