Lines Matching refs:so

86 soisconnecting(struct socket *so)  in soisconnecting()  argument
88 soassertlocked(so); in soisconnecting()
89 so->so_state &= ~(SS_ISCONNECTED|SS_ISDISCONNECTING); in soisconnecting()
90 so->so_state |= SS_ISCONNECTING; in soisconnecting()
94 soisconnected(struct socket *so) in soisconnected() argument
96 struct socket *head = so->so_head; in soisconnected()
98 soassertlocked(so); in soisconnected()
99 so->so_state &= ~(SS_ISCONNECTING|SS_ISDISCONNECTING); in soisconnected()
100 so->so_state |= SS_ISCONNECTED; in soisconnected()
102 if (head != NULL && so->so_onq == &head->so_q0) { in soisconnected()
104 sounlock(so); in soisconnected()
106 solock(so); in soisconnected()
108 if (so->so_onq != &head->so_q0) { in soisconnected()
114 soqremque(so, 0); in soisconnected()
115 soqinsque(head, so, 1); in soisconnected()
122 wakeup(&so->so_timeo); in soisconnected()
123 sorwakeup(so); in soisconnected()
124 sowwakeup(so); in soisconnected()
129 soisdisconnecting(struct socket *so) in soisdisconnecting() argument
131 soassertlocked(so); in soisdisconnecting()
132 so->so_state &= ~SS_ISCONNECTING; in soisdisconnecting()
133 so->so_state |= SS_ISDISCONNECTING; in soisdisconnecting()
135 mtx_enter(&so->so_rcv.sb_mtx); in soisdisconnecting()
136 so->so_rcv.sb_state |= SS_CANTRCVMORE; in soisdisconnecting()
137 mtx_leave(&so->so_rcv.sb_mtx); in soisdisconnecting()
139 mtx_enter(&so->so_snd.sb_mtx); in soisdisconnecting()
140 so->so_snd.sb_state |= SS_CANTSENDMORE; in soisdisconnecting()
141 mtx_leave(&so->so_snd.sb_mtx); in soisdisconnecting()
143 wakeup(&so->so_timeo); in soisdisconnecting()
144 sowwakeup(so); in soisdisconnecting()
145 sorwakeup(so); in soisdisconnecting()
149 soisdisconnected(struct socket *so) in soisdisconnected() argument
151 soassertlocked(so); in soisdisconnected()
153 mtx_enter(&so->so_rcv.sb_mtx); in soisdisconnected()
154 so->so_rcv.sb_state |= SS_CANTRCVMORE; in soisdisconnected()
155 mtx_leave(&so->so_rcv.sb_mtx); in soisdisconnected()
157 mtx_enter(&so->so_snd.sb_mtx); in soisdisconnected()
158 so->so_snd.sb_state |= SS_CANTSENDMORE; in soisdisconnected()
159 mtx_leave(&so->so_snd.sb_mtx); in soisdisconnected()
161 so->so_state &= ~(SS_ISCONNECTING|SS_ISCONNECTED|SS_ISDISCONNECTING); in soisdisconnected()
162 so->so_state |= SS_ISDISCONNECTED; in soisdisconnected()
164 wakeup(&so->so_timeo); in soisdisconnected()
165 sowwakeup(so); in soisdisconnected()
166 sorwakeup(so); in soisdisconnected()
180 struct socket *so; in sonewconn() local
189 so = soalloc(head->so_proto, wait); in sonewconn()
190 if (so == NULL) in sonewconn()
192 so->so_type = head->so_type; in sonewconn()
193 so->so_options = head->so_options &~ SO_ACCEPTCONN; in sonewconn()
194 so->so_linger = head->so_linger; in sonewconn()
195 so->so_state = head->so_state | SS_NOFDREF; in sonewconn()
196 so->so_proto = head->so_proto; in sonewconn()
197 so->so_timeo = head->so_timeo; in sonewconn()
198 so->so_euid = head->so_euid; in sonewconn()
199 so->so_ruid = head->so_ruid; in sonewconn()
200 so->so_egid = head->so_egid; in sonewconn()
201 so->so_rgid = head->so_rgid; in sonewconn()
202 so->so_cpid = head->so_cpid; in sonewconn()
207 solock_nonet(so); in sonewconn()
212 if (soreserve(so, head->so_snd.sb_hiwat, head->so_rcv.sb_hiwat)) in sonewconn()
216 so->so_snd.sb_wat = head->so_snd.sb_wat; in sonewconn()
217 so->so_snd.sb_lowat = head->so_snd.sb_lowat; in sonewconn()
218 so->so_snd.sb_timeo_nsecs = head->so_snd.sb_timeo_nsecs; in sonewconn()
222 so->so_rcv.sb_wat = head->so_rcv.sb_wat; in sonewconn()
223 so->so_rcv.sb_lowat = head->so_rcv.sb_lowat; in sonewconn()
224 so->so_rcv.sb_timeo_nsecs = head->so_rcv.sb_timeo_nsecs; in sonewconn()
227 sigio_copy(&so->so_sigio, &head->so_sigio); in sonewconn()
229 soqinsque(head, so, soqueue); in sonewconn()
230 if (pru_attach(so, 0, wait) != 0) { in sonewconn()
231 soqremque(so, soqueue); in sonewconn()
235 so->so_state |= connstatus; in sonewconn()
240 return (so); in sonewconn()
243 sounlock_nonet(so); in sonewconn()
244 sigio_free(&so->so_sigio); in sonewconn()
245 klist_free(&so->so_rcv.sb_klist); in sonewconn()
246 klist_free(&so->so_snd.sb_klist); in sonewconn()
247 pool_put(&socket_pool, so); in sonewconn()
253 soqinsque(struct socket *head, struct socket *so, int q) in soqinsque() argument
256 soassertlocked(so); in soqinsque()
258 KASSERT(so->so_onq == NULL); in soqinsque()
260 so->so_head = head; in soqinsque()
263 so->so_onq = &head->so_q0; in soqinsque()
266 so->so_onq = &head->so_q; in soqinsque()
268 TAILQ_INSERT_TAIL(so->so_onq, so, so_qe); in soqinsque()
272 soqremque(struct socket *so, int q) in soqremque() argument
274 struct socket *head = so->so_head; in soqremque()
276 soassertlocked(so); in soqremque()
280 if (so->so_onq != &head->so_q0) in soqremque()
284 if (so->so_onq != &head->so_q) in soqremque()
288 TAILQ_REMOVE(so->so_onq, so, so_qe); in soqremque()
289 so->so_onq = NULL; in soqremque()
290 so->so_head = NULL; in soqremque()
305 socantsendmore(struct socket *so) in socantsendmore() argument
307 soassertlocked(so); in socantsendmore()
308 mtx_enter(&so->so_snd.sb_mtx); in socantsendmore()
309 so->so_snd.sb_state |= SS_CANTSENDMORE; in socantsendmore()
310 mtx_leave(&so->so_snd.sb_mtx); in socantsendmore()
311 sowwakeup(so); in socantsendmore()
315 socantrcvmore(struct socket *so) in socantrcvmore() argument
317 mtx_enter(&so->so_rcv.sb_mtx); in socantrcvmore()
318 so->so_rcv.sb_state |= SS_CANTRCVMORE; in socantrcvmore()
319 mtx_leave(&so->so_rcv.sb_mtx); in socantrcvmore()
320 sorwakeup(so); in socantrcvmore()
324 solock(struct socket *so) in solock() argument
326 switch (so->so_proto->pr_domain->dom_family) { in solock()
332 rw_enter_write(&so->so_lock); in solock()
338 solock_shared(struct socket *so) in solock_shared() argument
340 switch (so->so_proto->pr_domain->dom_family) { in solock_shared()
346 rw_enter_write(&so->so_lock); in solock_shared()
350 solock_nonet(struct socket *so) in solock_nonet() argument
352 switch (so->so_proto->pr_domain->dom_family) { in solock_nonet()
358 rw_enter_write(&so->so_lock); in solock_nonet()
362 solock_persocket(struct socket *so) in solock_persocket() argument
364 switch (so->so_proto->pr_domain->dom_family) { in solock_persocket()
396 sounlock(struct socket *so) in sounlock() argument
398 switch (so->so_proto->pr_domain->dom_family) { in sounlock()
404 rw_exit_write(&so->so_lock); in sounlock()
410 sounlock_shared(struct socket *so) in sounlock_shared() argument
412 rw_exit_write(&so->so_lock); in sounlock_shared()
413 switch (so->so_proto->pr_domain->dom_family) { in sounlock_shared()
422 sounlock_nonet(struct socket *so) in sounlock_nonet() argument
424 rw_exit_write(&so->so_lock); in sounlock_nonet()
448 soassertlocked_readonly(struct socket *so) in soassertlocked_readonly() argument
450 switch (so->so_proto->pr_domain->dom_family) { in soassertlocked_readonly()
456 rw_assert_wrlock(&so->so_lock); in soassertlocked_readonly()
462 soassertlocked(struct socket *so) in soassertlocked() argument
464 switch (so->so_proto->pr_domain->dom_family) { in soassertlocked()
471 rw_status(&so->so_lock) != RW_WRITE) in soassertlocked()
477 rw_assert_wrlock(&so->so_lock); in soassertlocked()
483 sosleep_nsec(struct socket *so, void *ident, int prio, const char *wmesg, in sosleep_nsec() argument
488 switch (so->so_proto->pr_domain->dom_family) { in sosleep_nsec()
492 rw_exit_write(&so->so_lock); in sosleep_nsec()
495 rw_enter_write(&so->so_lock); in sosleep_nsec()
498 ret = rwsleep_nsec(ident, &so->so_lock, prio, wmesg, nsecs); in sosleep_nsec()
556 sowakeup(struct socket *so, struct sockbuf *sb) in sowakeup() argument
575 pgsigio(&so->so_sigio, SIGIO, 0); in sowakeup()
611 soreserve(struct socket *so, u_long sndcc, u_long rcvcc) in soreserve() argument
613 soassertlocked(so); in soreserve()
615 mtx_enter(&so->so_rcv.sb_mtx); in soreserve()
616 mtx_enter(&so->so_snd.sb_mtx); in soreserve()
617 if (sbreserve(so, &so->so_snd, sndcc)) in soreserve()
619 so->so_snd.sb_wat = sndcc; in soreserve()
620 if (so->so_snd.sb_lowat == 0) in soreserve()
621 so->so_snd.sb_lowat = MCLBYTES; in soreserve()
622 if (so->so_snd.sb_lowat > so->so_snd.sb_hiwat) in soreserve()
623 so->so_snd.sb_lowat = so->so_snd.sb_hiwat; in soreserve()
624 if (sbreserve(so, &so->so_rcv, rcvcc)) in soreserve()
626 so->so_rcv.sb_wat = rcvcc; in soreserve()
627 if (so->so_rcv.sb_lowat == 0) in soreserve()
628 so->so_rcv.sb_lowat = 1; in soreserve()
629 mtx_leave(&so->so_snd.sb_mtx); in soreserve()
630 mtx_leave(&so->so_rcv.sb_mtx); in soreserve()
634 sbrelease(so, &so->so_snd); in soreserve()
636 mtx_leave(&so->so_snd.sb_mtx); in soreserve()
637 mtx_leave(&so->so_rcv.sb_mtx); in soreserve()
647 sbreserve(struct socket *so, struct sockbuf *sb, u_long cc) in sbreserve() argument
695 sbrelease(struct socket *so, struct sockbuf *sb) in sbrelease() argument
789 sbappend(struct socket *so, struct sockbuf *sb, struct mbuf *m) in sbappend() argument
807 sbappendrecord(so, sb, m); /* XXXXXX!!!! */ in sbappend()
828 sbappendstream(struct socket *so, struct sockbuf *sb, struct mbuf *m) in sbappendstream() argument
844 sbcheck(struct socket *so, struct sockbuf *sb) in sbcheck() argument
872 sbappendrecord(struct socket *so, struct sockbuf *sb, struct mbuf *m0) in sbappendrecord() argument
905 sbappendaddr(struct socket *so, struct sockbuf *sb, const struct sockaddr *asa, in sbappendaddr() argument
954 sbappendcontrol(struct socket *so, struct sockbuf *sb, struct mbuf *m0, in sbappendcontrol() argument