Lines Matching refs:so
123 struct socket *so = fp->f_data; in soo_read() local
127 error = mac_socket_check_receive(active_cred, so); in soo_read()
131 error = soreceive(so, 0, uio, 0, 0, 0); in soo_read()
139 struct socket *so = fp->f_data; in soo_write() local
143 error = mac_socket_check_send(active_cred, so); in soo_write()
147 error = sousrsend(so, NULL, uio, NULL, 0, NULL); in soo_write()
155 struct socket *so = fp->f_data; in soo_ioctl() local
160 SOCK_LOCK(so); in soo_ioctl()
162 so->so_state |= SS_NBIO; in soo_ioctl()
164 so->so_state &= ~SS_NBIO; in soo_ioctl()
165 SOCK_UNLOCK(so); in soo_ioctl()
170 SOCK_LOCK(so); in soo_ioctl()
171 so->so_state |= SS_ASYNC; in soo_ioctl()
172 if (SOLISTENING(so)) { in soo_ioctl()
173 so->sol_sbrcv_flags |= SB_ASYNC; in soo_ioctl()
174 so->sol_sbsnd_flags |= SB_ASYNC; in soo_ioctl()
176 SOCK_RECVBUF_LOCK(so); in soo_ioctl()
177 so->so_rcv.sb_flags |= SB_ASYNC; in soo_ioctl()
178 SOCK_RECVBUF_UNLOCK(so); in soo_ioctl()
179 SOCK_SENDBUF_LOCK(so); in soo_ioctl()
180 so->so_snd.sb_flags |= SB_ASYNC; in soo_ioctl()
181 SOCK_SENDBUF_UNLOCK(so); in soo_ioctl()
183 SOCK_UNLOCK(so); in soo_ioctl()
185 SOCK_LOCK(so); in soo_ioctl()
186 so->so_state &= ~SS_ASYNC; in soo_ioctl()
187 if (SOLISTENING(so)) { in soo_ioctl()
188 so->sol_sbrcv_flags &= ~SB_ASYNC; in soo_ioctl()
189 so->sol_sbsnd_flags &= ~SB_ASYNC; in soo_ioctl()
191 SOCK_RECVBUF_LOCK(so); in soo_ioctl()
192 so->so_rcv.sb_flags &= ~SB_ASYNC; in soo_ioctl()
193 SOCK_RECVBUF_UNLOCK(so); in soo_ioctl()
194 SOCK_SENDBUF_LOCK(so); in soo_ioctl()
195 so->so_snd.sb_flags &= ~SB_ASYNC; in soo_ioctl()
196 SOCK_SENDBUF_UNLOCK(so); in soo_ioctl()
198 SOCK_UNLOCK(so); in soo_ioctl()
203 SOCK_RECVBUF_LOCK(so); in soo_ioctl()
204 if (SOLISTENING(so)) { in soo_ioctl()
207 *(int *)data = sbavail(&so->so_rcv) - so->so_rcv.sb_ctl; in soo_ioctl()
209 SOCK_RECVBUF_UNLOCK(so); in soo_ioctl()
214 if (SOLISTENING(so)) { in soo_ioctl()
217 *(int *)data = sbavail(&so->so_snd); in soo_ioctl()
223 if (SOLISTENING(so)) { in soo_ioctl()
226 if ((so->so_snd.sb_hiwat < sbused(&so->so_snd)) || in soo_ioctl()
227 (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt)) { in soo_ioctl()
230 *(int *)data = sbspace(&so->so_snd); in soo_ioctl()
236 error = fsetown(*(int *)data, &so->so_sigio); in soo_ioctl()
240 *(int *)data = fgetown(&so->so_sigio); in soo_ioctl()
244 error = fsetown(-(*(int *)data), &so->so_sigio); in soo_ioctl()
248 *(int *)data = -fgetown(&so->so_sigio); in soo_ioctl()
253 if (SOLISTENING(so)) { in soo_ioctl()
256 *(int *)data = (so->so_rcv.sb_state & SBS_RCVATMARK) != 0; in soo_ioctl()
266 error = ifioctl(so, cmd, data, td); in soo_ioctl()
268 CURVNET_SET(so->so_vnet); in soo_ioctl()
269 error = rtioctl_fib(cmd, data, so->so_fibnum); in soo_ioctl()
272 CURVNET_SET(so->so_vnet); in soo_ioctl()
273 error = so->so_proto->pr_control(so, cmd, data, 0, td); in soo_ioctl()
285 struct socket *so = fp->f_data; in soo_poll() local
289 error = mac_socket_check_poll(active_cred, so); in soo_poll()
293 return (sopoll(so, events, fp->f_cred, td)); in soo_poll()
299 struct socket *so = fp->f_data; in soo_stat() local
305 error = mac_socket_check_stat(active_cred, so); in soo_stat()
309 SOCK_LOCK(so); in soo_stat()
310 if (!SOLISTENING(so)) { in soo_stat()
317 sb = &so->so_rcv; in soo_stat()
318 SOCK_RECVBUF_LOCK(so); in soo_stat()
322 SOCK_RECVBUF_UNLOCK(so); in soo_stat()
324 sb = &so->so_snd; in soo_stat()
325 SOCK_SENDBUF_LOCK(so); in soo_stat()
328 SOCK_SENDBUF_UNLOCK(so); in soo_stat()
330 ub->st_uid = so->so_cred->cr_uid; in soo_stat()
331 ub->st_gid = so->so_cred->cr_gid; in soo_stat()
332 if (so->so_proto->pr_sense) in soo_stat()
333 error = so->so_proto->pr_sense(so, ub); in soo_stat()
334 SOCK_UNLOCK(so); in soo_stat()
348 struct socket *so; in soo_close() local
350 so = fp->f_data; in soo_close()
354 if (so) in soo_close()
355 error = soclose(so); in soo_close()
365 struct socket *so; in soo_fill_kinfo() local
369 so = fp->f_data; in soo_fill_kinfo()
370 CURVNET_SET(so->so_vnet); in soo_fill_kinfo()
372 so->so_proto->pr_domain->dom_family; in soo_fill_kinfo()
373 kif->kf_un.kf_sock.kf_sock_type0 = so->so_type; in soo_fill_kinfo()
374 kif->kf_un.kf_sock.kf_sock_protocol0 = so->so_proto->pr_protocol; in soo_fill_kinfo()
375 kif->kf_un.kf_sock.kf_sock_pcb = (uintptr_t)so->so_pcb; in soo_fill_kinfo()
379 if (so->so_pcb != NULL) { in soo_fill_kinfo()
380 inpcb = (struct inpcb *)(so->so_pcb); in soo_fill_kinfo()
385 so->so_rcv.sb_state; in soo_fill_kinfo()
387 so->so_snd.sb_state; in soo_fill_kinfo()
389 sbused(&so->so_snd); in soo_fill_kinfo()
391 sbused(&so->so_rcv); in soo_fill_kinfo()
394 if (so->so_pcb != NULL) { in soo_fill_kinfo()
395 unpcb = (struct unpcb *)(so->so_pcb); in soo_fill_kinfo()
400 so->so_rcv.sb_state; in soo_fill_kinfo()
402 so->so_snd.sb_state; in soo_fill_kinfo()
404 sbused(&so->so_snd); in soo_fill_kinfo()
406 sbused(&so->so_rcv); in soo_fill_kinfo()
411 error = so->so_proto->pr_sockaddr(so, &sa); in soo_fill_kinfo()
417 error = so->so_proto->pr_peeraddr(so, &sa); in soo_fill_kinfo()
423 strncpy(kif->kf_path, so->so_proto->pr_domain->dom_name, in soo_fill_kinfo()
586 soaio_ready(struct socket *so, struct sockbuf *sb) in soaio_ready() argument
588 return (sb == &so->so_rcv ? soreadable(so) : sowriteable(so)); in soaio_ready()
592 soaio_process_job(struct socket *so, sb_which which, struct kaiocb *job) in soaio_process_job() argument
596 struct sockbuf *sb = sobuf(so, which); in soaio_process_job()
604 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
624 if (sb == &so->so_rcv) { in soaio_process_job()
627 error = mac_socket_check_receive(fp->f_cred, so); in soaio_process_job()
631 error = soreceive(so, NULL, job->uiop, NULL, NULL, in soaio_process_job()
640 error = mac_socket_check_send(fp->f_cred, so); in soaio_process_job()
643 error = sousrsend(so, NULL, job->uiop, NULL, flags, in soaio_process_job()
664 SOCK_BUF_LOCK(so, which); in soaio_process_job()
665 if (done == 0 || !(so->so_state & SS_NBIO)) { in soaio_process_job()
667 if (soaio_ready(so, sb)) { in soaio_process_job()
669 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
674 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
679 SOCK_BUF_LOCK(so, which); in soaio_process_job()
685 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
694 SOCK_BUF_LOCK(so, which); in soaio_process_job()
698 soaio_process_sb(struct socket *so, sb_which which) in soaio_process_sb() argument
701 struct sockbuf *sb = sobuf(so, which); in soaio_process_sb()
703 CURVNET_SET(so->so_vnet); in soaio_process_sb()
704 SOCK_BUF_LOCK(so, which); in soaio_process_sb()
705 while (!TAILQ_EMPTY(&sb->sb_aiojobq) && soaio_ready(so, sb)) { in soaio_process_sb()
711 soaio_process_job(so, which, job); in soaio_process_sb()
722 SOCK_BUF_UNLOCK(so, which); in soaio_process_sb()
724 sorele(so); in soaio_process_sb()
731 struct socket *so; in soaio_rcv() local
733 so = context; in soaio_rcv()
734 soaio_process_sb(so, SO_RCV); in soaio_rcv()
740 struct socket *so; in soaio_snd() local
742 so = context; in soaio_snd()
743 soaio_process_sb(so, SO_SND); in soaio_snd()
747 sowakeup_aio(struct socket *so, sb_which which) in sowakeup_aio() argument
749 struct sockbuf *sb = sobuf(so, which); in sowakeup_aio()
751 SOCK_BUF_LOCK_ASSERT(so, which); in sowakeup_aio()
757 soref(so); in sowakeup_aio()
764 struct socket *so; in soo_aio_cancel() local
770 so = job->fd_file->f_data; in soo_aio_cancel()
773 sb = &so->so_rcv; in soo_aio_cancel()
777 sb = &so->so_snd; in soo_aio_cancel()
781 SOCK_BUF_LOCK(so, which); in soo_aio_cancel()
786 SOCK_BUF_UNLOCK(so, which); in soo_aio_cancel()
798 struct socket *so; in soo_aio_queue() local
803 so = fp->f_data; in soo_aio_queue()
804 error = so->so_proto->pr_aio_queue(so, job); in soo_aio_queue()
811 SOCK_RECVBUF_LOCK(so); in soo_aio_queue()
812 sb = &so->so_rcv; in soo_aio_queue()
816 SOCK_SENDBUF_LOCK(so); in soo_aio_queue()
817 sb = &so->so_snd; in soo_aio_queue()
824 if (SOLISTENING(so)) { in soo_aio_queue()
825 SOCK_BUF_UNLOCK(so, which); in soo_aio_queue()
833 if (soaio_ready(so, sb)) in soo_aio_queue()
834 sowakeup_aio(so, which); in soo_aio_queue()
838 SOCK_BUF_UNLOCK(so, which); in soo_aio_queue()