Lines Matching full:so

121 	struct socket *so = fp->f_data;  in soo_read()  local
125 error = mac_socket_check_receive(active_cred, so); in soo_read()
129 error = soreceive(so, 0, uio, 0, 0, 0); in soo_read()
137 struct socket *so = fp->f_data; in soo_write() local
141 error = mac_socket_check_send(active_cred, so); in soo_write()
145 error = sousrsend(so, NULL, uio, NULL, 0, NULL); in soo_write()
153 struct socket *so = fp->f_data; in soo_ioctl() local
158 SOCK_LOCK(so); in soo_ioctl()
160 so->so_state |= SS_NBIO; in soo_ioctl()
162 so->so_state &= ~SS_NBIO; in soo_ioctl()
163 SOCK_UNLOCK(so); in soo_ioctl()
168 SOCK_LOCK(so); in soo_ioctl()
169 so->so_state |= SS_ASYNC; in soo_ioctl()
170 if (SOLISTENING(so)) { in soo_ioctl()
171 so->sol_sbrcv_flags |= SB_ASYNC; in soo_ioctl()
172 so->sol_sbsnd_flags |= SB_ASYNC; in soo_ioctl()
174 SOCK_RECVBUF_LOCK(so); in soo_ioctl()
175 so->so_rcv.sb_flags |= SB_ASYNC; in soo_ioctl()
176 SOCK_RECVBUF_UNLOCK(so); in soo_ioctl()
177 SOCK_SENDBUF_LOCK(so); in soo_ioctl()
178 so->so_snd.sb_flags |= SB_ASYNC; in soo_ioctl()
179 SOCK_SENDBUF_UNLOCK(so); in soo_ioctl()
181 SOCK_UNLOCK(so); in soo_ioctl()
183 SOCK_LOCK(so); in soo_ioctl()
184 so->so_state &= ~SS_ASYNC; in soo_ioctl()
185 if (SOLISTENING(so)) { in soo_ioctl()
186 so->sol_sbrcv_flags &= ~SB_ASYNC; in soo_ioctl()
187 so->sol_sbsnd_flags &= ~SB_ASYNC; in soo_ioctl()
189 SOCK_RECVBUF_LOCK(so); in soo_ioctl()
190 so->so_rcv.sb_flags &= ~SB_ASYNC; in soo_ioctl()
191 SOCK_RECVBUF_UNLOCK(so); in soo_ioctl()
192 SOCK_SENDBUF_LOCK(so); in soo_ioctl()
193 so->so_snd.sb_flags &= ~SB_ASYNC; in soo_ioctl()
194 SOCK_SENDBUF_UNLOCK(so); in soo_ioctl()
196 SOCK_UNLOCK(so); in soo_ioctl()
201 SOCK_RECVBUF_LOCK(so); in soo_ioctl()
202 if (SOLISTENING(so)) { in soo_ioctl()
205 *(int *)data = sbavail(&so->so_rcv) - so->so_rcv.sb_ctl; in soo_ioctl()
207 SOCK_RECVBUF_UNLOCK(so); in soo_ioctl()
212 if (SOLISTENING(so)) { in soo_ioctl()
215 *(int *)data = sbavail(&so->so_snd); in soo_ioctl()
221 if (SOLISTENING(so)) { in soo_ioctl()
224 if ((so->so_snd.sb_hiwat < sbused(&so->so_snd)) || in soo_ioctl()
225 (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt)) { in soo_ioctl()
228 *(int *)data = sbspace(&so->so_snd); in soo_ioctl()
234 error = fsetown(*(int *)data, &so->so_sigio); in soo_ioctl()
238 *(int *)data = fgetown(&so->so_sigio); in soo_ioctl()
242 error = fsetown(-(*(int *)data), &so->so_sigio); in soo_ioctl()
246 *(int *)data = -fgetown(&so->so_sigio); in soo_ioctl()
251 if (SOLISTENING(so)) { in soo_ioctl()
254 *(int *)data = (so->so_rcv.sb_state & SBS_RCVATMARK) != 0; in soo_ioctl()
264 error = ifioctl(so, cmd, data, td); in soo_ioctl()
266 CURVNET_SET(so->so_vnet); in soo_ioctl()
267 error = rtioctl_fib(cmd, data, so->so_fibnum); in soo_ioctl()
270 CURVNET_SET(so->so_vnet); in soo_ioctl()
271 error = so->so_proto->pr_control(so, cmd, data, 0, td); in soo_ioctl()
283 struct socket *so = fp->f_data; in soo_poll() local
287 error = mac_socket_check_poll(active_cred, so); in soo_poll()
291 return (so->so_proto->pr_sopoll(so, events, td)); in soo_poll()
297 struct socket *so = fp->f_data; in soo_kqfilter() local
299 return (so->so_proto->pr_kqfilter(so, kn)); in soo_kqfilter()
305 struct socket *so = fp->f_data; in soo_stat() local
311 error = mac_socket_check_stat(active_cred, so); in soo_stat()
315 SOCK_LOCK(so); in soo_stat()
316 if (!SOLISTENING(so)) { in soo_stat()
323 sb = &so->so_rcv; in soo_stat()
324 SOCK_RECVBUF_LOCK(so); in soo_stat()
328 SOCK_RECVBUF_UNLOCK(so); in soo_stat()
330 sb = &so->so_snd; in soo_stat()
331 SOCK_SENDBUF_LOCK(so); in soo_stat()
334 SOCK_SENDBUF_UNLOCK(so); in soo_stat()
336 ub->st_uid = so->so_cred->cr_uid; in soo_stat()
337 ub->st_gid = so->so_cred->cr_gid; in soo_stat()
338 if (so->so_proto->pr_sense) in soo_stat()
339 error = so->so_proto->pr_sense(so, ub); in soo_stat()
340 SOCK_UNLOCK(so); in soo_stat()
354 struct socket *so; in soo_close() local
356 so = fp->f_data; in soo_close()
360 if (so) in soo_close()
361 error = soclose(so); in soo_close()
368 struct socket *so; in soo_chmod() local
371 so = fp->f_data; in soo_chmod()
372 if (so->so_proto->pr_chmod != NULL) in soo_chmod()
373 error = so->so_proto->pr_chmod(so, mode, cred, td); in soo_chmod()
384 struct socket *so; in soo_fill_kinfo() local
388 so = fp->f_data; in soo_fill_kinfo()
389 CURVNET_SET(so->so_vnet); in soo_fill_kinfo()
391 so->so_proto->pr_domain->dom_family; in soo_fill_kinfo()
392 kif->kf_un.kf_sock.kf_sock_type0 = so->so_type; in soo_fill_kinfo()
393 kif->kf_un.kf_sock.kf_sock_protocol0 = so->so_proto->pr_protocol; in soo_fill_kinfo()
394 kif->kf_un.kf_sock.kf_sock_pcb = (uintptr_t)so->so_pcb; in soo_fill_kinfo()
399 kif->kf_un.kf_sock.kf_sock_inpcb = (uintptr_t)so->so_pcb; in soo_fill_kinfo()
401 so->so_rcv.sb_state; in soo_fill_kinfo()
403 so->so_snd.sb_state; in soo_fill_kinfo()
405 sbused(&so->so_snd); in soo_fill_kinfo()
407 sbused(&so->so_rcv); in soo_fill_kinfo()
410 if (so->so_pcb != NULL) { in soo_fill_kinfo()
411 unpcb = (struct unpcb *)(so->so_pcb); in soo_fill_kinfo()
416 so->so_rcv.sb_state; in soo_fill_kinfo()
418 so->so_snd.sb_state; in soo_fill_kinfo()
420 sbused(&so->so_snd); in soo_fill_kinfo()
422 sbused(&so->so_rcv); in soo_fill_kinfo()
427 error = sosockaddr(so, (struct sockaddr *)&ss); in soo_fill_kinfo()
433 error = sopeeraddr(so, (struct sockaddr *)&ss); in soo_fill_kinfo()
438 strncpy(kif->kf_path, so->so_proto->pr_domain->dom_name, in soo_fill_kinfo()
446 * completed by the AIO job so far.
484 * Grab an extra reference on the daemon's vmspace so that it in soaio_kproc_loop()
549 * created, so stop. in soaio_kproc_create()
601 soaio_ready(struct socket *so, struct sockbuf *sb) in soaio_ready() argument
603 return (sb == &so->so_rcv ? soreadable(so) : sowriteable(so)); in soaio_ready()
607 soaio_process_job(struct socket *so, sb_which which, struct kaiocb *job) in soaio_process_job() argument
611 struct sockbuf *sb = sobuf(so, which); in soaio_process_job()
619 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
639 if (sb == &so->so_rcv) { in soaio_process_job()
642 error = mac_socket_check_receive(fp->f_cred, so); in soaio_process_job()
646 error = soreceive(so, NULL, job->uiop, NULL, NULL, in soaio_process_job()
655 error = mac_socket_check_send(fp->f_cred, so); in soaio_process_job()
658 error = sousrsend(so, NULL, job->uiop, NULL, flags, in soaio_process_job()
679 SOCK_BUF_LOCK(so, which); in soaio_process_job()
680 if (done == 0 || !(so->so_state & SS_NBIO)) { in soaio_process_job()
682 if (soaio_ready(so, sb)) { in soaio_process_job()
684 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
689 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
694 SOCK_BUF_LOCK(so, which); in soaio_process_job()
700 SOCK_BUF_UNLOCK(so, which); in soaio_process_job()
709 SOCK_BUF_LOCK(so, which); in soaio_process_job()
713 soaio_process_sb(struct socket *so, sb_which which) in soaio_process_sb() argument
716 struct sockbuf *sb = sobuf(so, which); in soaio_process_sb()
718 CURVNET_SET(so->so_vnet); in soaio_process_sb()
719 SOCK_BUF_LOCK(so, which); in soaio_process_sb()
720 while (!TAILQ_EMPTY(&sb->sb_aiojobq) && soaio_ready(so, sb)) { in soaio_process_sb()
726 soaio_process_job(so, which, job); in soaio_process_sb()
731 * ready so set SB_AIO to request a wakeup when the socket in soaio_process_sb()
737 SOCK_BUF_UNLOCK(so, which); in soaio_process_sb()
739 sorele(so); in soaio_process_sb()
746 struct socket *so; in soaio_rcv() local
748 so = context; in soaio_rcv()
749 soaio_process_sb(so, SO_RCV); in soaio_rcv()
755 struct socket *so; in soaio_snd() local
757 so = context; in soaio_snd()
758 soaio_process_sb(so, SO_SND); in soaio_snd()
762 sowakeup_aio(struct socket *so, sb_which which) in sowakeup_aio() argument
764 struct sockbuf *sb = sobuf(so, which); in sowakeup_aio()
766 SOCK_BUF_LOCK_ASSERT(so, which); in sowakeup_aio()
772 soref(so); in sowakeup_aio()
779 struct socket *so; in soo_aio_cancel() local
785 so = job->fd_file->f_data; in soo_aio_cancel()
788 sb = &so->so_rcv; in soo_aio_cancel()
792 sb = &so->so_snd; in soo_aio_cancel()
796 SOCK_BUF_LOCK(so, which); in soo_aio_cancel()
801 SOCK_BUF_UNLOCK(so, which); in soo_aio_cancel()
813 struct socket *so = fp->f_data; in soo_aio_queue() local
815 return (so->so_proto->pr_aio_queue(so, job)); in soo_aio_queue()
819 soaio_queue_generic(struct socket *so, struct kaiocb *job) in soaio_queue_generic() argument
827 SOCK_RECVBUF_LOCK(so); in soaio_queue_generic()
828 sb = &so->so_rcv; in soaio_queue_generic()
832 SOCK_SENDBUF_LOCK(so); in soaio_queue_generic()
833 sb = &so->so_snd; in soaio_queue_generic()
840 if (SOLISTENING(so)) { in soaio_queue_generic()
841 SOCK_BUF_UNLOCK(so, which); in soaio_queue_generic()
849 if (soaio_ready(so, sb)) in soaio_queue_generic()
850 sowakeup_aio(so, which); in soaio_queue_generic()
854 SOCK_BUF_UNLOCK(so, which); in soaio_queue_generic()