Lines Matching refs:fip

109 	struct fifoinfo *fip;  in fifo_cleanup()  local
112 fip = vp->v_fifoinfo; in fifo_cleanup()
113 if (fip->fi_readers == 0 && fip->fi_writers == 0) { in fifo_cleanup()
115 pipe_dtor(fip->fi_pipe); in fifo_cleanup()
116 free(fip, M_VNODE); in fifo_cleanup()
131 struct fifoinfo *fip; in fifo_open() local
142 if ((fip = vp->v_fifoinfo) == NULL) { in fifo_open()
146 fip = malloc(sizeof(*fip), M_VNODE, M_WAITOK | M_ZERO); in fifo_open()
147 fip->fi_pipe = fpipe; in fifo_open()
150 vp->v_fifoinfo = fip; in fifo_open()
152 fpipe = fip->fi_pipe; in fifo_open()
162 fip->fi_readers++; in fifo_open()
163 fip->fi_rgen++; in fifo_open()
164 if (fip->fi_readers == 1) { in fifo_open()
166 if (fip->fi_writers > 0) { in fifo_open()
167 wakeup(&fip->fi_writers); in fifo_open()
171 fp->f_pipegen = fpipe->pipe_wgen - fip->fi_writers; in fifo_open()
174 if ((ap->a_mode & O_NONBLOCK) && fip->fi_readers == 0) { in fifo_open()
176 if (fip->fi_writers == 0) in fifo_open()
180 fip->fi_writers++; in fifo_open()
181 fip->fi_wgen++; in fifo_open()
182 if (fip->fi_writers == 1) { in fifo_open()
184 if (fip->fi_readers > 0) { in fifo_open()
185 wakeup(&fip->fi_readers); in fifo_open()
191 if ((ap->a_mode & FREAD) && fip->fi_writers == 0) { in fifo_open()
192 gen = fip->fi_wgen; in fifo_open()
195 error = msleep(&fip->fi_readers, PIPE_MTX(fpipe), in fifo_open()
199 if (error != 0 && gen == fip->fi_wgen) { in fifo_open()
200 fip->fi_readers--; in fifo_open()
201 if (fip->fi_readers == 0) { in fifo_open()
219 if ((ap->a_mode & FWRITE) && fip->fi_readers == 0) { in fifo_open()
220 gen = fip->fi_rgen; in fifo_open()
223 error = msleep(&fip->fi_writers, PIPE_MTX(fpipe), in fifo_open()
227 if (error != 0 && gen == fip->fi_rgen) { in fifo_open()
228 fip->fi_writers--; in fifo_open()
229 if (fip->fi_writers == 0) { in fifo_open()
264 struct fifoinfo *fip; in fifo_close() local
269 fip = vp->v_fifoinfo; in fifo_close()
279 if (fip == NULL) in fifo_close()
282 cpipe = fip->fi_pipe; in fifo_close()
284 fip->fi_readers--; in fifo_close()
285 if (fip->fi_readers == 0) { in fifo_close()
297 fip->fi_writers--; in fifo_close()
298 if (fip->fi_writers == 0) { in fifo_close()
320 struct fifoinfo *fip = vp->v_fifoinfo; in fifo_printinfo() local
322 if (fip == NULL){ in fifo_printinfo()
327 fip->fi_readers, fip->fi_writers); in fifo_printinfo()