Lines Matching refs:fnp
178 fifonode_t *fnp = VTOF(vp); in tsol_fifo_access() local
182 (!(fnp->fn_flag & ISPIPE))) { in tsol_fifo_access()
225 fifonode_t *fnp = VTOF(vp); in fifo_open() local
226 fifolock_t *fn_lock = fnp->fn_lock; in fifo_open()
242 fnp->fn_rcnt++; /* record reader present */ in fifo_open()
243 if (! (fnp->fn_flag & ISPIPE)) in fifo_open()
244 fnp->fn_rsynccnt++; /* record reader in open */ in fifo_open()
253 fnp->fn_wcnt++; /* record writer present */ in fifo_open()
254 if (! (fnp->fn_flag & ISPIPE)) in fifo_open()
255 fnp->fn_wsynccnt++; /* record writer in open */ in fifo_open()
271 if (fnp->fn_flag & ISPIPE) { in fifo_open()
279 ASSERT(fnp->fn_rsynccnt == 0); in fifo_open()
280 ASSERT(fnp->fn_wsynccnt == 0); in fifo_open()
298 fnp->fn_rsynccnt--; /* reader done with open */ in fifo_open()
299 if (fnp->fn_flag & FIFOSYNC) { in fifo_open()
305 fnp->fn_flag |= FIFOROCR; in fifo_open()
306 cv_broadcast(&fnp->fn_wait_cv); in fifo_open()
310 fnp->fn_wsynccnt--; /* writer done with open */ in fifo_open()
311 if (fnp->fn_flag & FIFOSYNC) { in fifo_open()
317 fnp->fn_flag |= FIFOWOCR; in fifo_open()
318 cv_broadcast(&fnp->fn_wait_cv); in fifo_open()
322 fnp->fn_flag &= ~FIFOSYNC; in fifo_open()
331 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
334 ASSERT(fnp->fn_rsynccnt <= fnp->fn_rcnt); in fifo_open()
335 ASSERT(fnp->fn_wsynccnt <= fnp->fn_wcnt); in fifo_open()
346 while ((fnp->fn_flag & FIFOWOCR) == 0 && in fifo_open()
347 fnp->fn_wcnt == fnp->fn_wsynccnt) { in fifo_open()
349 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
352 fnp->fn_insync++; in fifo_open()
353 fnp->fn_flag |= FIFOSYNC; in fifo_open()
354 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_open()
355 &fnp->fn_lock->flk_lock)) { in fifo_open()
361 if (--fnp->fn_insync == 0 && in fifo_open()
362 fnp->fn_flag & FIFOWOCR) { in fifo_open()
363 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
365 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
375 if (--fnp->fn_insync == 0 && in fifo_open()
376 fnp->fn_flag & FIFOWOCR) { in fifo_open()
377 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
382 while ((fnp->fn_flag & FIFOROCR) == 0 && in fifo_open()
383 fnp->fn_rcnt == fnp->fn_rsynccnt) { in fifo_open()
384 if ((flag & (FNDELAY|FNONBLOCK)) && fnp->fn_rcnt == 0) { in fifo_open()
385 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
390 fnp->fn_flag |= FIFOSYNC; in fifo_open()
391 fnp->fn_insync++; in fifo_open()
392 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_open()
393 &fnp->fn_lock->flk_lock)) { in fifo_open()
399 if (--fnp->fn_insync == 0 && in fifo_open()
400 (fnp->fn_flag & FIFOROCR) != 0) { in fifo_open()
401 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
403 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_open()
413 if (--fnp->fn_insync == 0 && in fifo_open()
414 (fnp->fn_flag & FIFOROCR) != 0) { in fifo_open()
415 fnp->fn_flag &= ~(FIFOWOCR|FIFOROCR); in fifo_open()
440 fifonode_t *fnp = VTOF(vp); in fifo_close() local
441 fifonode_t *fn_dest = fnp->fn_dest; in fifo_close()
443 fifolock_t *fn_lock = fnp->fn_lock; in fifo_close()
476 fnp->fn_rcnt--; in fifo_close()
486 if (--fnp->fn_wcnt == 0 && fn_dest->fn_rcnt > 0) { in fifo_close()
503 if (!(fnp->fn_flag & ISPIPE)) in fifo_close()
504 fnp->fn_flag |= FIFOCLOSE; in fifo_close()
521 if (fnp->fn_rcnt == 0 && fn_dest->fn_wcnt > 0) { in fifo_close()
537 if (--fnp->fn_open > 0) { in fifo_close()
538 ASSERT((fnp->fn_rcnt + fnp->fn_wcnt) != 0); in fifo_close()
577 fnp->fn_flag &= ~FIFOISOPEN; in fifo_close()
578 if ((fnp->fn_flag & ISPIPE) && !(fnp->fn_flag & FIFOCLOSE)) { in fifo_close()
579 fnp->fn_flag |= FIFOCLOSE; in fifo_close()
581 if (fnp->fn_flag & FIFOFAST) in fifo_close()
582 fifo_fastflush(fnp); in fifo_close()
619 if (fnp->fn_flag & FIFOFAST) in fifo_close()
620 fifo_fastflush(fnp); in fifo_close()
661 fifonode_t *fnp = VTOF(vp); in fifo_read() local
663 fifolock_t *fn_lock = fnp->fn_lock; in fifo_read()
673 TRACE_2(TR_FAC_FIFO, TR_FIFOREAD_IN, "fifo_read in:%p fnp %p", vp, fnp); in fifo_read()
675 if (! (fnp->fn_flag & FIFOFAST)) in fifo_read()
678 fn_dest = fnp->fn_dest; in fifo_read()
683 while (fnp->fn_count == 0) { in fifo_read()
707 ASSERT((fnp->fn_flag & (ISPIPE|FIFOCLOSE)) != in fifo_read()
712 fnp->fn_flag |= FIFOWANTR; in fifo_read()
716 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_read()
728 if (!(fnp->fn_flag & FIFOFAST)) in fifo_read()
732 ASSERT(fnp->fn_mp != NULL); in fifo_read()
738 int bpsize = MBLKL(fnp->fn_mp); in fifo_read()
741 error = uiomove(fnp->fn_mp->b_rptr, uiosize, UIO_READ, uiop); in fifo_read()
745 fnp->fn_count -= uiosize; in fifo_read()
748 bp = fnp->fn_mp; in fifo_read()
749 fnp->fn_mp = fnp->fn_mp->b_cont; in fifo_read()
755 while (fnp->fn_mp == NULL && fn_dest->fn_wwaitcnt > 0) { in fifo_read()
756 ASSERT(fnp->fn_count == 0); in fifo_read()
767 fnp->fn_flag |= FIFOWANTR; in fifo_read()
770 if (!cv_wait_sig(&fnp->fn_wait_cv, in fifo_read()
774 if (!(fnp->fn_flag & FIFOFAST)) in fifo_read()
778 fnp->fn_mp->b_rptr += uiosize; in fifo_read()
781 } while (uiop->uio_resid != 0 && fnp->fn_mp != NULL); in fifo_read()
784 ASSERT(msgdsize(fnp->fn_mp) == fnp->fn_count); in fifo_read()
793 fnp->fn_count < Fifohiwat) { in fifo_read()
818 if (fnp->fn_flag & ISPIPE) in fifo_read()
819 fnp->fn_dest->fn_atime = now; in fifo_read()
820 fnp->fn_atime = now; in fifo_read()
847 struct fifonode *fnp, *fn_dest; in fifo_write() local
875 fnp = VTOF(vp); in fifo_write()
876 fn_lock = fnp->fn_lock; in fifo_write()
877 fn_dest = fnp->fn_dest; in fifo_write()
882 "fifo_write in:%p fnp %p size %d", vp, fnp, write_size); in fifo_write()
894 if (!(fnp->fn_flag & FIFOFAST)) in fifo_write()
916 fnp->fn_flag |= FIFOHIWATW; in fifo_write()
930 fnp->fn_flag |= FIFOWANTW; in fifo_write()
931 fnp->fn_wwaitcnt++; in fifo_write()
934 if (!cv_wait_sig_swap(&fnp->fn_wait_cv, in fifo_write()
937 fnp->fn_wwaitcnt--; in fifo_write()
941 fnp->fn_wwaitcnt--; in fifo_write()
949 if (!(fnp->fn_flag & FIFOFAST)) in fifo_write()
982 if (!fifo_stayfast_enter(fnp)) in fifo_write()
1007 fifo_stayfast_exit(fnp); in fifo_write()
1015 if (!(fnp->fn_flag & FIFOFAST)) in fifo_write()
1041 fifo_stayfast_exit(fnp); in fifo_write()
1093 if (fnp->fn_flag & ISPIPE) { in fifo_write()
1096 fnp->fn_mtime = fnp->fn_ctime = now; in fifo_write()
1101 "fifo_write out: vp %p error %d fnp %p", vp, error, fnp); in fifo_write()
1107 "fifo_write out: vp %p error %d fnp %p", vp, error, fnp); in fifo_write()
1133 fifonode_t *fnp = VTOF(vp); in fifo_fastioctl() local
1136 fifolock_t *fn_lock = fnp->fn_lock; in fifo_fastioctl()
1150 if (!(fnp->fn_flag & FIFOFAST)) { in fifo_fastioctl()
1200 *rvalp = (fnp->fn_dest->fn_count < Fifohiwat) ? 1 : 0; in fifo_fastioctl()
1210 error = copyout((caddr_t)&fnp->fn_count, (caddr_t)arg, in fifo_fastioctl()
1213 *rvalp = (fnp->fn_count == 0) ? 0 : 1; in fifo_fastioctl()
1218 *rvalp = fnp->fn_count; in fifo_fastioctl()
1232 if (fnp->fn_count == 0) { in fifo_fastioctl()
1264 count = fnp->fn_count; in fifo_fastioctl()
1265 bp = fnp->fn_mp; in fifo_fastioctl()
1291 error = copyout((caddr_t)&fnp->fn_count, (caddr_t)arg, in fifo_fastioctl()
1292 sizeof (fnp->fn_count)); in fifo_fastioctl()
1306 fnp->fn_flag |= FIFOSETSIG; in fifo_fastioctl()
1308 fnp->fn_flag &= ~FIFOSETSIG; in fifo_fastioctl()
1320 fifo_fastflush(fnp); in fifo_fastioctl()
1322 fn_dest = fnp->fn_dest; in fifo_fastioctl()
1373 fifo_fastoff(fnp); in fifo_fastioctl()
1391 fifonode_t *fnp = VTOF(vp); in fifo_strioctl() local
1396 if (mode == FKIOCTL && fnp->fn_pcredp != NULL) { in fifo_strioctl()
1398 crhold(fnp->fn_pcredp); in fifo_strioctl()
1399 kp->pc_cr = fnp->fn_pcredp; in fifo_strioctl()
1400 kp->pc_cpid = fnp->fn_cpid; in fifo_strioctl()
1421 fn_lock = fnp->fn_lock; in fifo_strioctl()
1423 if (fnp->fn_flag & FIFOSEND) { in fifo_strioctl()
1424 fnp->fn_flag &= ~FIFOSEND; in fifo_strioctl()
1425 cv_broadcast(&fnp->fn_dest->fn_wait_cv); in fifo_strioctl()
1447 fifonode_t *fnp = VTOF(vp); in fifo_getattr() local
1450 fifolock_t *fn_lock = fnp->fn_lock; in fifo_getattr()
1452 if (fnp->fn_realvp) { in fifo_getattr()
1456 if (error = VOP_GETATTR(fnp->fn_realvp, vap, flags, crp, ct)) in fifo_getattr()
1460 vap->va_atime.tv_sec = fnp->fn_atime; in fifo_getattr()
1462 vap->va_mtime.tv_sec = fnp->fn_mtime; in fifo_getattr()
1464 vap->va_ctime.tv_sec = fnp->fn_ctime; in fifo_getattr()
1472 vap->va_atime.tv_sec = fnp->fn_atime; in fifo_getattr()
1474 vap->va_mtime.tv_sec = fnp->fn_mtime; in fifo_getattr()
1476 vap->va_ctime.tv_sec = fnp->fn_ctime; in fifo_getattr()
1482 vap->va_nodeid = (ino64_t)fnp->fn_ino; in fifo_getattr()
1491 if (vp->v_stream && (fnp->fn_flag & FIFOISOPEN)) { in fifo_getattr()
1492 if ((fnp->fn_flag & FIFOFAST)) { in fifo_getattr()
1493 vap->va_size = (u_offset_t)fnp->fn_count; in fifo_getattr()
1527 fifonode_t *fnp = VTOF(vp); in fifo_setattr() local
1531 if (fnp->fn_realvp) in fifo_setattr()
1532 error = VOP_SETATTR(fnp->fn_realvp, vap, flags, crp, ctp); in fifo_setattr()
1534 fn_lock = fnp->fn_lock; in fifo_setattr()
1537 fnp->fn_atime = vap->va_atime.tv_sec; in fifo_setattr()
1539 fnp->fn_mtime = vap->va_mtime.tv_sec; in fifo_setattr()
1540 fnp->fn_ctime = gethrestime_sec(); in fifo_setattr()
1588 fifonode_t *fnp = VTOF(vp); in fifo_fsync() local
1591 if (fnp->fn_realvp == NULL) in fifo_fsync()
1596 if (VOP_GETATTR(fnp->fn_realvp, &va, 0, crp, ct) == 0) { in fifo_fsync()
1598 if (fnp->fn_mtime > va.va_mtime.tv_sec) { in fifo_fsync()
1599 va.va_mtime.tv_sec = fnp->fn_mtime; in fifo_fsync()
1602 if (fnp->fn_atime > va.va_atime.tv_sec) { in fifo_fsync()
1603 va.va_atime.tv_sec = fnp->fn_atime; in fifo_fsync()
1607 (void) VOP_SETATTR(fnp->fn_realvp, &va, 0, crp, ct); in fifo_fsync()
1609 return (VOP_FSYNC(fnp->fn_realvp, syncflag, crp, ct)); in fifo_fsync()
1619 fifonode_t *fnp; in fifo_inactive() local
1636 fnp = VTOF(vp); in fifo_inactive()
1644 if (fnp->fn_realvp) { in fifo_inactive()
1645 (void) fiforemove(fnp); in fifo_inactive()
1648 VN_RELE(fnp->fn_realvp); in fifo_inactive()
1654 fn_lock = fnp->fn_lock; in fifo_inactive()
1665 ASSERT(fnp->fn_open == 0); in fifo_inactive()
1666 ASSERT(fnp->fn_dest->fn_open == 0); in fifo_inactive()
1667 if (fnp->fn_mp) { in fifo_inactive()
1668 freemsg(fnp->fn_mp); in fifo_inactive()
1669 fnp->fn_mp = NULL; in fifo_inactive()
1670 fnp->fn_count = 0; in fifo_inactive()
1672 if (fnp->fn_pcredp != NULL) { in fifo_inactive()
1673 crfree(fnp->fn_pcredp); in fifo_inactive()
1674 fnp->fn_pcredp = NULL; in fifo_inactive()
1676 if (fnp->fn_flag & ISPIPE) { in fifo_inactive()
1677 fifonode_t *fn_dest = fnp->fn_dest; in fifo_inactive()
1765 fifonode_t *fnp, *fn_dest; in fifo_poll() local
1774 fnp = VTOF(vp); in fifo_poll()
1775 fn_dest = fnp->fn_dest; in fifo_poll()
1776 fn_lock = fnp->fn_lock; in fifo_poll()
1786 if ((fnp->fn_flag & FIFOISOPEN) == 0) { in fifo_poll()
1788 fnp->fn_rcnt == 0) || in fifo_poll()
1790 fnp->fn_wcnt == 0)) { in fifo_poll()
1791 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1800 if (!(fnp->fn_flag & FIFOFAST)) { in fifo_poll()
1801 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1811 if ((fnp->fn_flag & ISPIPE) && (fn_dest->fn_open == 0)) { in fifo_poll()
1813 } else if ((fnp->fn_flag & (FIFOCLOSE | ISPIPE)) == FIFOCLOSE && in fifo_poll()
1825 fnp->fn_flag |= FIFOHIWATW; in fifo_poll()
1835 if (fnp->fn_count) in fifo_poll()
1843 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1854 fnp->fn_flag |= FIFOPOLLW; in fifo_poll()
1856 fnp->fn_flag |= FIFOPOLLR; in fifo_poll()
1858 fnp->fn_flag |= FIFOPOLLRBAND; in fifo_poll()
1864 mutex_exit(&fnp->fn_lock->flk_lock); in fifo_poll()
1992 fifo_stayfast_enter(fifonode_t *fnp) in fifo_stayfast_enter() argument
1994 ASSERT(MUTEX_HELD(&fnp->fn_lock->flk_lock)); in fifo_stayfast_enter()
1995 while (fnp->fn_flag & FIFOSTAYFAST) { in fifo_stayfast_enter()
1996 fnp->fn_flag |= FIFOWAITMODE; in fifo_stayfast_enter()
1997 cv_wait(&fnp->fn_wait_cv, &fnp->fn_lock->flk_lock); in fifo_stayfast_enter()
1998 fnp->fn_flag &= ~FIFOWAITMODE; in fifo_stayfast_enter()
2000 if (!(fnp->fn_flag & FIFOFAST)) in fifo_stayfast_enter()
2003 fnp->fn_flag |= FIFOSTAYFAST; in fifo_stayfast_enter()
2014 fifo_stayfast_exit(fifonode_t *fnp) in fifo_stayfast_exit() argument
2016 fifonode_t *fn_dest = fnp->fn_dest; in fifo_stayfast_exit()
2018 ASSERT(MUTEX_HELD(&fnp->fn_lock->flk_lock)); in fifo_stayfast_exit()
2020 fnp->fn_flag &= ~FIFOSTAYFAST; in fifo_stayfast_exit()
2022 if (fnp->fn_flag & FIFOWAITMODE) in fifo_stayfast_exit()
2023 cv_broadcast(&fnp->fn_wait_cv); in fifo_stayfast_exit()
2025 if ((fnp->fn_flag & ISPIPE) && (fn_dest->fn_flag & FIFOWAITMODE)) in fifo_stayfast_exit()