Annotation of researchv10no/libc/fio/tstsk.c, revision 1.1.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.