5 static Biobufhdr* wbufs[20];
15 for(i=0; i<nelem(wbufs); i++) {
26 deinstall(Biobufhdr *bp)
30 for(i=0; i<nelem(wbufs); i++)
37 install(Biobufhdr *bp)
42 for(i=0; i<nelem(wbufs); i++)
54 bioread(Biobufhdr *bp, void *v, long n)
56 return read(bp->fid, v, n);
60 biowrite(Biobufhdr *bp, void *v, long n)
62 return write(bp->fid, v, n);
66 Binits(Biobufhdr *bp, int f, int mode, uchar *p, int size)
68 p += Bungetsize; /* make room for Bungets */
71 switch(mode&~(OCEXEC|ORCLOSE|OTRUNC)) {
73 fprint(2, "Binits: unknown mode %d\n", mode);
105 Binit(Biobuf *bp, int f, int mode)
107 return Binits(bp, f, mode, bp->b, sizeof(bp->b));
111 Bfdopen(int fd, int mode)
115 bp = malloc(sizeof(Biobuf));
118 if(Binits(bp, fd, mode, bp->b, sizeof(bp->b)) != 0){
122 bp->flag = Bmagic; /* mark bp open & malloced */
123 setmalloctag(bp, getcallerpc(&fd));
128 Bopen(char *name, int mode)
133 switch(mode&~(OCEXEC|ORCLOSE|OTRUNC)) {
135 fprint(2, "Bopen: unknown mode %#x\n", mode);
138 fd = open(name, mode);
141 fd = create(name, mode, 0666);
146 bp = Bfdopen(fd, mode);
151 setmalloctag(bp, getcallerpc(&name));
162 if(bp->flag == Bmagic) {
165 bp->fid = -1; /* prevent accidents */
168 /* otherwise opened with Binit(s) */
173 Biofn(Biobufhdr *bp, int (*f)(Biobufhdr *, void *, long))
176 if(bp->state == Bwactive)