Lines Matching defs:so

57  * Function pointer set by the AIO routines so that the socket buffer code
379 socantsendmore_locked(struct socket *so)
382 SOCK_SENDBUF_LOCK_ASSERT(so);
384 so->so_snd.sb_state |= SBS_CANTSENDMORE;
385 sowwakeup_locked(so);
386 SOCK_SENDBUF_UNLOCK_ASSERT(so);
390 socantsendmore(struct socket *so)
393 SOCK_SENDBUF_LOCK(so);
394 socantsendmore_locked(so);
395 SOCK_SENDBUF_UNLOCK_ASSERT(so);
399 socantrcvmore_locked(struct socket *so)
402 SOCK_RECVBUF_LOCK_ASSERT(so);
404 so->so_rcv.sb_state |= SBS_CANTRCVMORE;
406 if (so->so_rcv.sb_flags & SB_TLS_RX)
407 ktls_check_rx(&so->so_rcv);
409 sorwakeup_locked(so);
410 SOCK_RECVBUF_UNLOCK_ASSERT(so);
414 socantrcvmore(struct socket *so)
417 SOCK_RECVBUF_LOCK(so);
418 socantrcvmore_locked(so);
419 SOCK_RECVBUF_UNLOCK_ASSERT(so);
423 soroverflow_locked(struct socket *so)
426 SOCK_RECVBUF_LOCK_ASSERT(so);
428 if (so->so_options & SO_RERROR) {
429 so->so_rerror = ENOBUFS;
430 sorwakeup_locked(so);
432 SOCK_RECVBUF_UNLOCK(so);
434 SOCK_RECVBUF_UNLOCK_ASSERT(so);
438 soroverflow(struct socket *so)
441 SOCK_RECVBUF_LOCK(so);
442 soroverflow_locked(so);
443 SOCK_RECVBUF_UNLOCK_ASSERT(so);
450 sbwait(struct socket *so, sb_which which)
454 SOCK_BUF_LOCK_ASSERT(so, which);
456 sb = sobuf(so, which);
458 return (msleep_sbt(&sb->sb_acc, soeventmtx(so, which),
476 sowakeup(struct socket *so, const sb_which which)
481 SOCK_BUF_LOCK_ASSERT(so, which);
483 sb = sobuf(so, which);
493 ret = sb->sb_upcall(so, sb->sb_upcallarg, M_NOWAIT);
495 KASSERT(sb == &so->so_rcv,
497 soupcall_clear(so, SO_RCV);
502 sowakeup_aio(so, which);
503 SOCK_BUF_UNLOCK(so, which);
505 soisconnected(so);
506 if ((so->so_state & SS_ASYNC) && so->so_sigio != NULL)
507 pgsigio(&so->so_sigio, SIGIO, 0);
508 SOCK_BUF_UNLOCK_ASSERT(so, which);
512 splice_push(struct socket *so)
516 SOCK_RECVBUF_LOCK_ASSERT(so);
518 sp = so->so_splice;
520 SOCK_RECVBUF_UNLOCK(so);
525 splice_pull(struct socket *so)
529 SOCK_SENDBUF_LOCK_ASSERT(so);
531 sp = so->so_splice_back;
533 SOCK_SENDBUF_UNLOCK(so);
548 sorwakeup_locked(struct socket *so)
550 SOCK_RECVBUF_LOCK_ASSERT(so);
551 if (so->so_rcv.sb_flags & SB_SPLICED)
552 splice_push(so);
553 else if (sb_notify(&so->so_rcv))
554 sowakeup(so, SO_RCV);
556 SOCK_RECVBUF_UNLOCK(so);
560 sowwakeup_locked(struct socket *so)
562 SOCK_SENDBUF_LOCK_ASSERT(so);
563 if (so->so_snd.sb_flags & SB_SPLICED)
564 splice_pull(so);
565 else if (sb_notify(&so->so_snd))
566 sowakeup(so, SO_SND);
568 SOCK_SENDBUF_UNLOCK(so);
603 soreserve(struct socket *so, u_long sndcc, u_long rcvcc)
607 SOCK_SENDBUF_LOCK(so);
608 SOCK_RECVBUF_LOCK(so);
609 if (sbreserve_locked(so, SO_SND, sndcc, td) == 0)
611 if (sbreserve_locked(so, SO_RCV, rcvcc, td) == 0)
613 if (so->so_rcv.sb_lowat == 0)
614 so->so_rcv.sb_lowat = 1;
615 if (so->so_snd.sb_lowat == 0)
616 so->so_snd.sb_lowat = MCLBYTES;
617 if (so->so_snd.sb_lowat > so->so_snd.sb_hiwat)
618 so->so_snd.sb_lowat = so->so_snd.sb_hiwat;
619 SOCK_RECVBUF_UNLOCK(so);
620 SOCK_SENDBUF_UNLOCK(so);
623 sbrelease_locked(so, SO_SND);
625 SOCK_RECVBUF_UNLOCK(so);
626 SOCK_SENDBUF_UNLOCK(so);
647 * Allot mbufs to a sockbuf. Attempt to scale mbmax so that mbcnt doesn't
651 sbreserve_locked_limit(struct socket *so, sb_which which, u_long cc,
654 struct sockbuf *sb = sobuf(so, which);
657 SOCK_BUF_LOCK_ASSERT(so, which);
672 if (!chgsbsize(so->so_cred->cr_uidinfo, &sb->sb_hiwat, cc,
682 sbreserve_locked(struct socket *so, sb_which which, u_long cc,
685 return (sbreserve_locked_limit(so, which, cc, sb_max, td));
689 sbsetopt(struct socket *so, struct sockopt *sopt)
703 * so disallow them.
710 SOCK_LOCK(so);
711 if (SOLISTENING(so)) {
715 lowat = &so->sol_sbsnd_lowat;
716 hiwat = &so->sol_sbsnd_hiwat;
717 flags = &so->sol_sbsnd_flags;
721 lowat = &so->sol_sbrcv_lowat;
722 hiwat = &so->sol_sbrcv_hiwat;
723 flags = &so->sol_sbrcv_flags;
730 sb = &so->so_snd;
735 sb = &so->so_rcv;
742 SOCK_BUF_LOCK(so, wh);
749 if (SOLISTENING(so)) {
758 if (!sbreserve_locked(so, wh, cc, curthread))
774 if (!SOLISTENING(so))
775 SOCK_BUF_UNLOCK(so, wh);
776 SOCK_UNLOCK(so);
784 sbrelease_internal(struct socket *so, sb_which which)
786 struct sockbuf *sb = sobuf(so, which);
789 (void)chgsbsize(so->so_cred->cr_uidinfo, &sb->sb_hiwat, 0,
795 sbrelease_locked(struct socket *so, sb_which which)
798 SOCK_BUF_LOCK_ASSERT(so, which);
800 sbrelease_internal(so, which);
804 sbrelease(struct socket *so, sb_which which)
807 SOCK_BUF_LOCK(so, which);
808 sbrelease_locked(so, which);
809 SOCK_BUF_UNLOCK(so, which);
813 sbdestroy(struct socket *so, sb_which which)
816 struct sockbuf *sb = sobuf(so, which);
822 sbrelease_internal(so, which);
1221 /* always call sbcompress() so it can do SBLASTMBUFCHK() */