pi 25 kernel/pipe.c struct pipe *pi; pi 27 kernel/pipe.c pi = 0; pi 31 kernel/pipe.c if ((pi = (struct pipe *)kalloc()) == 0) pi 33 kernel/pipe.c pi->readopen = 1; pi 34 kernel/pipe.c pi->writeopen = 1; pi 35 kernel/pipe.c pi->nwrite = 0; pi 36 kernel/pipe.c pi->nread = 0; pi 37 kernel/pipe.c initlock(&pi->lock, "pipe"); pi 41 kernel/pipe.c (*f0)->pipe = pi; pi 45 kernel/pipe.c (*f1)->pipe = pi; pi 49 kernel/pipe.c if (pi) pi 50 kernel/pipe.c kfree((char *)pi); pi 59 kernel/pipe.c pipeclose(struct pipe *pi, int writable) pi 61 kernel/pipe.c acquire(&pi->lock); pi 63 kernel/pipe.c pi->writeopen = 0; pi 64 kernel/pipe.c wakeup(&pi->nread); pi 66 kernel/pipe.c pi->readopen = 0; pi 67 kernel/pipe.c wakeup(&pi->nwrite); pi 69 kernel/pipe.c if (pi->readopen == 0 && pi->writeopen == 0) { pi 70 kernel/pipe.c release(&pi->lock); pi 71 kernel/pipe.c kfree((char *)pi); pi 73 kernel/pipe.c release(&pi->lock); pi 77 kernel/pipe.c pipewrite(struct pipe *pi, uint64 addr, int n) pi 82 kernel/pipe.c acquire(&pi->lock); pi 84 kernel/pipe.c if (pi->readopen == 0 || killed(pr)) { pi 85 kernel/pipe.c release(&pi->lock); pi 88 kernel/pipe.c if (pi->nwrite == pi->nread + PIPESIZE) { //DOC: pipewrite-full pi 89 kernel/pipe.c wakeup(&pi->nread); pi 90 kernel/pipe.c sleep_prepare(&pi->nwrite); pi 91 kernel/pipe.c release(&pi->lock); pi 93 kernel/pipe.c acquire(&pi->lock); pi 101 kernel/pipe.c pi->data[pi->nwrite++ % PIPESIZE] = ch; pi 105 kernel/pipe.c wakeup(&pi->nread); pi 106 kernel/pipe.c release(&pi->lock); pi 112 kernel/pipe.c piperead(struct pipe *pi, uint64 addr, int n) pi 118 kernel/pipe.c acquire(&pi->lock); pi 119 kernel/pipe.c while (pi->nread == pi->nwrite && pi->writeopen) { //DOC: pipe-empty pi 121 kernel/pipe.c release(&pi->lock); pi 124 kernel/pipe.c sleep_prepare(&pi->nread); //DOC: piperead-sleep pi 125 kernel/pipe.c release(&pi->lock); pi 127 kernel/pipe.c acquire(&pi->lock); pi 130 kernel/pipe.c if (pi->nread == pi->nwrite) pi 132 kernel/pipe.c ch = pi->data[pi->nread % PIPESIZE]; pi 138 kernel/pipe.c pi->nread++; pi 140 kernel/pipe.c wakeup(&pi->nwrite); //DOC: piperead-wakeup pi 141 kernel/pipe.c release(&pi->lock); pi 1189 user/usertests.c int fd, pid, i, j, n, total, pi; pi 1194 user/usertests.c for (pi = 0; pi < NCHILD; pi++) { pi 1195 user/usertests.c fname = names[pi]; pi 1211 user/usertests.c memset(buf, '0' + pi, SZ); pi 1223 user/usertests.c for (pi = 0; pi < NCHILD; pi++) { pi 1256 user/usertests.c int pid, i, fd, pi; pi 1259 user/usertests.c for (pi = 0; pi < NCHILD; pi++) { pi 1267 user/usertests.c name[0] = 'p' + pi; pi 1290 user/usertests.c for (pi = 0; pi < NCHILD; pi++) { pi 1298 user/usertests.c for (pi = 0; pi < NCHILD; pi++) { pi 1299 user/usertests.c name[0] = 'p' + pi; pi 1315 user/usertests.c for (pi = 0; pi < NCHILD; pi++) { pi 1316 user/usertests.c name[0] = 'p' + pi;