Lines Matching refs:fnp
176 fifonode_t *fnp = VTOF(vp); in tsol_fifo_access() local
180 (!(fnp->fn_flag & ISPIPE))) { in tsol_fifo_access()
223 fifonode_t *fnp = VTOF(vp); in fifo_open() local
224 fifolock_t *fn_lock = fnp->fn_lock; in fifo_open()
240 fnp->fn_rcnt++; /* record reader present */ in fifo_open()
241 if (! (fnp->fn_flag & ISPIPE)) in fifo_open()
242 fnp->fn_rsynccnt++; /* record reader in open */ in fifo_open()
251 fnp->fn_wcnt++; /* record writer present */ in fifo_open()
252 if (! (fnp->fn_flag & ISPIPE)) in fifo_open()
253 fnp->fn_wsynccnt++; /* record writer in open */ in fifo_open()
269 if (fnp->fn_flag & ISPIPE) { in fifo_open()
277 ASSERT(fnp->fn_rsynccnt == 0); in fifo_open()
278 ASSERT(fnp->fn_wsynccnt == 0); in fifo_open()
296 fnp->fn_rsynccnt--; /* reader done with open */ in fifo_open()
297 if (fnp->fn_flag & FIFOSYNC) { in fifo_open()
303 fnp->fn_flag |= FIFOROCR; in fifo_open()
304 cv_broadcast(&fnp->fn_wait_cv); in fifo_open()
308 fnp->fn_wsynccnt--; /* writer done with open */ in fifo_open()
309 if (fnp->fn_flag & FIFOSYNC) { in fifo_open()
315 fnp->fn_flag |= FIFOWOCR; in fifo_open()
316 cv_broadcast(&fnp->fn_wait_cv); in fifo_open()
320 fnp->fn_flag &= ~FIFOSYNC; in fifo_open()
329 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
332 ASSERT(fnp->fn_rsynccnt <= fnp->fn_rcnt); in fifo_open()
333 ASSERT(fnp->fn_wsynccnt <= fnp->fn_wcnt); in fifo_open()
344 while ((fnp->fn_flag & FIFOWOCR) == 0 && in fifo_open()
345 fnp->fn_wcnt == fnp->fn_wsynccnt) { in fifo_open()
347 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
350 fnp->fn_insync++; in fifo_open()
351 fnp->fn_flag |= FIFOSYNC; in fifo_open()
352 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_open()
353 &fnp->fn_lock->flk_lock)) { in fifo_open()
359 if (--fnp->fn_insync == 0 && in fifo_open()
360 fnp->fn_flag & FIFOWOCR) { in fifo_open()
361 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
363 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
373 if (--fnp->fn_insync == 0 && in fifo_open()
374 fnp->fn_flag & FIFOWOCR) { in fifo_open()
375 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
380 while ((fnp->fn_flag & FIFOROCR) == 0 && in fifo_open()
381 fnp->fn_rcnt == fnp->fn_rsynccnt) { in fifo_open()
382 if ((flag & (FNDELAY|FNONBLOCK)) && fnp->fn_rcnt == 0) { in fifo_open()
383 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
388 fnp->fn_flag |= FIFOSYNC; in fifo_open()
389 fnp->fn_insync++; in fifo_open()
390 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_open()
391 &fnp->fn_lock->flk_lock)) { in fifo_open()
397 if (--fnp->fn_insync == 0 && in fifo_open()
398 (fnp->fn_flag & FIFOROCR) != 0) { in fifo_open()
399 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
401 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
411 if (--fnp->fn_insync == 0 && in fifo_open()
412 (fnp->fn_flag & FIFOROCR) != 0) { in fifo_open()
413 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
438 fifonode_t *fnp = VTOF(vp); in fifo_close() local
439 fifonode_t *fn_dest = fnp->fn_dest; in fifo_close()
441 fifolock_t *fn_lock = fnp->fn_lock; in fifo_close()
474 fnp->fn_rcnt--; in fifo_close()
484 if (--fnp->fn_wcnt == 0 && fn_dest->fn_rcnt > 0) { in fifo_close()
501 if (!(fnp->fn_flag & ISPIPE)) in fifo_close()
502 fnp->fn_flag |= FIFOCLOSE; in fifo_close()
519 if (fnp->fn_rcnt == 0 && fn_dest->fn_wcnt > 0) { in fifo_close()
535 if (--fnp->fn_open > 0) { in fifo_close()
536 ASSERT((fnp->fn_rcnt + fnp->fn_wcnt) != 0); in fifo_close()
575 fnp->fn_flag &= ~FIFOISOPEN; in fifo_close()
576 if ((fnp->fn_flag & ISPIPE) && !(fnp->fn_flag & FIFOCLOSE)) { in fifo_close()
577 fnp->fn_flag |= FIFOCLOSE; in fifo_close()
579 if (fnp->fn_flag & FIFOFAST) in fifo_close()
580 fifo_fastflush(fnp); in fifo_close()
617 if (fnp->fn_flag & FIFOFAST) in fifo_close()
618 fifo_fastflush(fnp); in fifo_close()
659 fifonode_t *fnp = VTOF(vp); in fifo_read() local
661 fifolock_t *fn_lock = fnp->fn_lock; in fifo_read()
671 TRACE_2(TR_FAC_FIFO, TR_FIFOREAD_IN, "fifo_read in:%p fnp %p", vp, fnp); in fifo_read()
673 if (! (fnp->fn_flag & FIFOFAST)) in fifo_read()
676 fn_dest = fnp->fn_dest; in fifo_read()
681 while (fnp->fn_count == 0) { in fifo_read()
705 ASSERT((fnp->fn_flag & (ISPIPE|FIFOCLOSE)) != in fifo_read()
710 fnp->fn_flag |= FIFOWANTR; in fifo_read()
714 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_read()
726 if (!(fnp->fn_flag & FIFOFAST)) in fifo_read()
730 ASSERT(fnp->fn_mp != NULL); in fifo_read()
736 int bpsize = MBLKL(fnp->fn_mp); in fifo_read()
739 error = uiomove(fnp->fn_mp->b_rptr, uiosize, UIO_READ, uiop); in fifo_read()
743 fnp->fn_count -= uiosize; in fifo_read()
746 bp = fnp->fn_mp; in fifo_read()
747 fnp->fn_mp = fnp->fn_mp->b_cont; in fifo_read()
753 while (fnp->fn_mp == NULL && fn_dest->fn_wwaitcnt > 0) { in fifo_read()
754 ASSERT(fnp->fn_count == 0); in fifo_read()
765 fnp->fn_flag |= FIFOWANTR; in fifo_read()
768 if (!cv_wait_sig(&fnp->fn_wait_cv, in fifo_read()
772 if (!(fnp->fn_flag & FIFOFAST)) in fifo_read()
776 fnp->fn_mp->b_rptr += uiosize; in fifo_read()
779 } while (uiop->uio_resid != 0 && fnp->fn_mp != NULL); in fifo_read()
782 ASSERT(msgdsize(fnp->fn_mp) == fnp->fn_count); in fifo_read()
791 fnp->fn_count < Fifohiwat) { in fifo_read()
816 if (fnp->fn_flag & ISPIPE) in fifo_read()
817 fnp->fn_dest->fn_atime = now; in fifo_read()
818 fnp->fn_atime = now; in fifo_read()
845 struct fifonode *fnp, *fn_dest; in fifo_write() local
873 fnp = VTOF(vp); in fifo_write()
874 fn_lock = fnp->fn_lock; in fifo_write()
875 fn_dest = fnp->fn_dest; in fifo_write()
880 "fifo_write in:%p fnp %p size %d", vp, fnp, write_size); in fifo_write()
892 if (!(fnp->fn_flag & FIFOFAST)) in fifo_write()
914 fnp->fn_flag |= FIFOHIWATW; in fifo_write()
928 fnp->fn_flag |= FIFOWANTW; in fifo_write()
929 fnp->fn_wwaitcnt++; in fifo_write()
932 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_write()
935 fnp->fn_wwaitcnt--; in fifo_write()
939 fnp->fn_wwaitcnt--; in fifo_write()
947 if (!(fnp->fn_flag & FIFOFAST)) in fifo_write()
980 if (!fifo_stayfast_enter(fnp)) in fifo_write()
1005 fifo_stayfast_exit(fnp); in fifo_write()
1013 if (!(fnp->fn_flag & FIFOFAST)) in fifo_write()
1039 fifo_stayfast_exit(fnp); in fifo_write()
1091 if (fnp->fn_flag & ISPIPE) { in fifo_write()
1094 fnp->fn_mtime = fnp->fn_ctime = now; in fifo_write()
1099 "fifo_write out: vp %p error %d fnp %p", vp, error, fnp); in fifo_write()
1105 "fifo_write out: vp %p error %d fnp %p", vp, error, fnp); in fifo_write()
1131 fifonode_t *fnp = VTOF(vp); in fifo_fastioctl() local
1134 fifolock_t *fn_lock = fnp->fn_lock; in fifo_fastioctl()
1148 if (!(fnp->fn_flag & FIFOFAST)) { in fifo_fastioctl()
1198 *rvalp = (fnp->fn_dest->fn_count < Fifohiwat) ? 1 : 0; in fifo_fastioctl()
1208 error = copyout((caddr_t)&fnp->fn_count, (caddr_t)arg, in fifo_fastioctl()
1211 *rvalp = (fnp->fn_count == 0) ? 0 : 1; in fifo_fastioctl()
1216 *rvalp = fnp->fn_count; in fifo_fastioctl()
1230 if (fnp->fn_count == 0) { in fifo_fastioctl()
1262 count = fnp->fn_count; in fifo_fastioctl()
1263 bp = fnp->fn_mp; in fifo_fastioctl()
1289 error = copyout((caddr_t)&fnp->fn_count, (caddr_t)arg, in fifo_fastioctl()
1290 sizeof (fnp->fn_count)); in fifo_fastioctl()
1304 fnp->fn_flag |= FIFOSETSIG; in fifo_fastioctl()
1306 fnp->fn_flag &= ~FIFOSETSIG; in fifo_fastioctl()
1318 fifo_fastflush(fnp); in fifo_fastioctl()
1320 fn_dest = fnp->fn_dest; in fifo_fastioctl()
1371 fifo_fastoff(fnp); in fifo_fastioctl()
1389 fifonode_t *fnp = VTOF(vp); in fifo_strioctl() local
1394 if (mode == FKIOCTL && fnp->fn_pcredp != NULL) { in fifo_strioctl()
1396 crhold(fnp->fn_pcredp); in fifo_strioctl()
1397 kp->pc_cr = fnp->fn_pcredp; in fifo_strioctl()
1398 kp->pc_cpid = fnp->fn_cpid; in fifo_strioctl()
1419 fn_lock = fnp->fn_lock; in fifo_strioctl()
1421 if (fnp->fn_flag & FIFOSEND) { in fifo_strioctl()
1422 fnp->fn_flag &= ~FIFOSEND; in fifo_strioctl()
1423 cv_broadcast(&fnp->fn_dest->fn_wait_cv); in fifo_strioctl()
1445 fifonode_t *fnp = VTOF(vp); in fifo_getattr() local
1448 fifolock_t *fn_lock = fnp->fn_lock; in fifo_getattr()
1450 if (fnp->fn_realvp) { in fifo_getattr()
1454 if (error = VOP_GETATTR(fnp->fn_realvp, vap, flags, crp, ct)) in fifo_getattr()
1458 vap->va_atime.tv_sec = fnp->fn_atime; in fifo_getattr()
1460 vap->va_mtime.tv_sec = fnp->fn_mtime; in fifo_getattr()
1462 vap->va_ctime.tv_sec = fnp->fn_ctime; in fifo_getattr()
1470 vap->va_atime.tv_sec = fnp->fn_atime; in fifo_getattr()
1472 vap->va_mtime.tv_sec = fnp->fn_mtime; in fifo_getattr()
1474 vap->va_ctime.tv_sec = fnp->fn_ctime; in fifo_getattr()
1480 vap->va_nodeid = (ino64_t)fnp->fn_ino; in fifo_getattr()
1489 if (vp->v_stream && (fnp->fn_flag & FIFOISOPEN)) { in fifo_getattr()
1490 if ((fnp->fn_flag & FIFOFAST)) { in fifo_getattr()
1491 vap->va_size = (u_offset_t)fnp->fn_count; in fifo_getattr()
1525 fifonode_t *fnp = VTOF(vp); in fifo_setattr() local
1529 if (fnp->fn_realvp) in fifo_setattr()
1530 error = VOP_SETATTR(fnp->fn_realvp, vap, flags, crp, ctp); in fifo_setattr()
1532 fn_lock = fnp->fn_lock; in fifo_setattr()
1535 fnp->fn_atime = vap->va_atime.tv_sec; in fifo_setattr()
1537 fnp->fn_mtime = vap->va_mtime.tv_sec; in fifo_setattr()
1538 fnp->fn_ctime = gethrestime_sec(); in fifo_setattr()
1586 fifonode_t *fnp = VTOF(vp); in fifo_fsync() local
1589 if (fnp->fn_realvp == NULL) in fifo_fsync()
1594 if (VOP_GETATTR(fnp->fn_realvp, &va, 0, crp, ct) == 0) { in fifo_fsync()
1596 if (fnp->fn_mtime > va.va_mtime.tv_sec) { in fifo_fsync()
1597 va.va_mtime.tv_sec = fnp->fn_mtime; in fifo_fsync()
1600 if (fnp->fn_atime > va.va_atime.tv_sec) { in fifo_fsync()
1601 va.va_atime.tv_sec = fnp->fn_atime; in fifo_fsync()
1605 (void) VOP_SETATTR(fnp->fn_realvp, &va, 0, crp, ct); in fifo_fsync()
1607 return (VOP_FSYNC(fnp->fn_realvp, syncflag, crp, ct)); in fifo_fsync()
1617 fifonode_t *fnp; in fifo_inactive() local
1634 fnp = VTOF(vp); in fifo_inactive()
1642 if (fnp->fn_realvp) { in fifo_inactive()
1643 (void) fiforemove(fnp); in fifo_inactive()
1646 VN_RELE(fnp->fn_realvp); in fifo_inactive()
1652 fn_lock = fnp->fn_lock; in fifo_inactive()
1663 ASSERT(fnp->fn_open == 0); in fifo_inactive()
1664 ASSERT(fnp->fn_dest->fn_open == 0); in fifo_inactive()
1665 if (fnp->fn_mp) { in fifo_inactive()
1666 freemsg(fnp->fn_mp); in fifo_inactive()
1667 fnp->fn_mp = NULL; in fifo_inactive()
1668 fnp->fn_count = 0; in fifo_inactive()
1670 if (fnp->fn_pcredp != NULL) { in fifo_inactive()
1671 crfree(fnp->fn_pcredp); in fifo_inactive()
1672 fnp->fn_pcredp = NULL; in fifo_inactive()
1674 if (fnp->fn_flag & ISPIPE) { in fifo_inactive()
1675 fifonode_t *fn_dest = fnp->fn_dest; in fifo_inactive()
1763 fifonode_t *fnp, *fn_dest; in fifo_poll() local
1772 fnp = VTOF(vp); in fifo_poll()
1773 fn_dest = fnp->fn_dest; in fifo_poll()
1774 fn_lock = fnp->fn_lock; in fifo_poll()
1781 if ((fnp->fn_flag & FIFOISOPEN) == 0) { in fifo_poll()
1783 fnp->fn_rcnt == 0) || in fifo_poll()
1785 fnp->fn_wcnt == 0)) { in fifo_poll()
1786 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1795 if (!(fnp->fn_flag & FIFOFAST)) { in fifo_poll()
1796 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1806 if ((fnp->fn_flag & ISPIPE) && (fn_dest->fn_open == 0)) { in fifo_poll()
1808 } else if ((fnp->fn_flag & (FIFOCLOSE | ISPIPE)) == FIFOCLOSE && in fifo_poll()
1820 fnp->fn_flag |= FIFOHIWATW; in fifo_poll()
1830 if (fnp->fn_count) in fifo_poll()
1839 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1850 fnp->fn_flag |= FIFOPOLLW; in fifo_poll()
1852 fnp->fn_flag |= FIFOPOLLR; in fifo_poll()
1854 fnp->fn_flag |= FIFOPOLLRBAND; in fifo_poll()
1860 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1988 fifo_stayfast_enter(fifonode_t *fnp) in fifo_stayfast_enter() argument
1990 ASSERT(MUTEX_HELD(&fnp->fn_lock->flk_lock)); in fifo_stayfast_enter()
1991 while (fnp->fn_flag & FIFOSTAYFAST) { in fifo_stayfast_enter()
1992 fnp->fn_flag |= FIFOWAITMODE; in fifo_stayfast_enter()
1993 cv_wait(&fnp->fn_wait_cv, &fnp->fn_lock->flk_lock); in fifo_stayfast_enter()
1994 fnp->fn_flag &= ~FIFOWAITMODE; in fifo_stayfast_enter()
1996 if (!(fnp->fn_flag & FIFOFAST)) in fifo_stayfast_enter()
1999 fnp->fn_flag |= FIFOSTAYFAST; in fifo_stayfast_enter()
2010 fifo_stayfast_exit(fifonode_t *fnp) in fifo_stayfast_exit() argument
2012 fifonode_t *fn_dest = fnp->fn_dest; in fifo_stayfast_exit()
2014 ASSERT(MUTEX_HELD(&fnp->fn_lock->flk_lock)); in fifo_stayfast_exit()
2016 fnp->fn_flag &= ~FIFOSTAYFAST; in fifo_stayfast_exit()
2018 if (fnp->fn_flag & FIFOWAITMODE) in fifo_stayfast_exit()
2019 cv_broadcast(&fnp->fn_wait_cv); in fifo_stayfast_exit()
2021 if ((fnp->fn_flag & ISPIPE) && (fn_dest->fn_flag & FIFOWAITMODE)) in fifo_stayfast_exit()