Annotation of researchv9/libc/fio/fioinit.c, revision 1.1

1.1     ! root        1: #define        FIO_IMP
        !             2: #include       "fio.h"
        !             3: #include       <libc.h>
        !             4: 
        !             5: void
        !             6: Finit(fd, buf)
        !             7:        char *buf;
        !             8: {
        !             9:        register Fbuffer *f;
        !            10:        static setfioexit = 1;
        !            11:        extern Fexit();
        !            12: 
        !            13:        if(setfioexit){
        !            14:                setfioexit = 0;
        !            15:                onexit(Fexit);
        !            16:        }
        !            17:        fd &= 0x7f;
        !            18:        if(buf)
        !            19:                Ffb[fd] = (Fbuffer *)buf;
        !            20:        else if(!Ffb[fd])
        !            21:                Ffb[fd] = (Fbuffer *)FIOMALLOC((COUNT)sizeof(Fbuffer));
        !            22:        f = Ffb[fd];
        !            23:        FIORESET(f);
        !            24:        f->offset = SEEK(fd, 0L, 1);
        !            25: }
        !            26: 
        !            27: #include       <sys/param.h>
        !            28: 
        !            29: Fbuffer *Ffb[NOFILE];
        !            30: 
        !            31: Fexit()
        !            32: {
        !            33:        register n;
        !            34: 
        !            35:        for(n = 0; n < NOFILE; n++)
        !            36:                if(Ffb[n] && (Ffb[n]->end == 0))
        !            37:                        F_flush(Ffb[n], n);
        !            38: }
        !            39: 
        !            40: F_flush(f, fd)
        !            41:        register Fbuffer *f;
        !            42: {
        !            43:        register COUNT n;
        !            44: 
        !            45:        f->end = 0;             /* mark as writing */
        !            46:        if(f->next != f->buf){
        !            47:                n = f->next - f->buf;
        !            48:                if(write(fd, f->buf, n) != n)
        !            49:                        return(1);
        !            50:                f->next = f->buf;
        !            51:        }
        !            52:        return(0);
        !            53: }

unix.superglobalmegacorp.com

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