Lines Matching defs:fnp

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