Lines Matching refs:so

124 	struct socket *so = fp->f_data;  in soo_read()  local
128 error = mac_socket_check_receive(active_cred, so); in soo_read()
132 error = soreceive(so, 0, uio, 0, 0, 0); in soo_read()
140 struct socket *so = fp->f_data; in soo_write() local
144 error = mac_socket_check_send(active_cred, so); in soo_write()
148 error = sosend(so, 0, uio, 0, 0, 0, uio->uio_td); in soo_write()
149 if (error == EPIPE && (so->so_options & SO_NOSIGPIPE) == 0) { in soo_write()
161 struct socket *so = fp->f_data; in soo_ioctl() local
166 SOCK_LOCK(so); in soo_ioctl()
168 so->so_state |= SS_NBIO; in soo_ioctl()
170 so->so_state &= ~SS_NBIO; in soo_ioctl()
171 SOCK_UNLOCK(so); in soo_ioctl()
176 SOCK_LOCK(so); in soo_ioctl()
177 so->so_state |= SS_ASYNC; in soo_ioctl()
178 if (SOLISTENING(so)) { in soo_ioctl()
179 so->sol_sbrcv_flags |= SB_ASYNC; in soo_ioctl()
180 so->sol_sbsnd_flags |= SB_ASYNC; in soo_ioctl()
182 SOCKBUF_LOCK(&so->so_rcv); in soo_ioctl()
183 so->so_rcv.sb_flags |= SB_ASYNC; in soo_ioctl()
184 SOCKBUF_UNLOCK(&so->so_rcv); in soo_ioctl()
185 SOCKBUF_LOCK(&so->so_snd); in soo_ioctl()
186 so->so_snd.sb_flags |= SB_ASYNC; in soo_ioctl()
187 SOCKBUF_UNLOCK(&so->so_snd); in soo_ioctl()
189 SOCK_UNLOCK(so); in soo_ioctl()
191 SOCK_LOCK(so); in soo_ioctl()
192 so->so_state &= ~SS_ASYNC; in soo_ioctl()
193 if (SOLISTENING(so)) { in soo_ioctl()
194 so->sol_sbrcv_flags &= ~SB_ASYNC; in soo_ioctl()
195 so->sol_sbsnd_flags &= ~SB_ASYNC; in soo_ioctl()
197 SOCKBUF_LOCK(&so->so_rcv); in soo_ioctl()
198 so->so_rcv.sb_flags &= ~SB_ASYNC; in soo_ioctl()
199 SOCKBUF_UNLOCK(&so->so_rcv); in soo_ioctl()
200 SOCKBUF_LOCK(&so->so_snd); in soo_ioctl()
201 so->so_snd.sb_flags &= ~SB_ASYNC; in soo_ioctl()
202 SOCKBUF_UNLOCK(&so->so_snd); in soo_ioctl()
204 SOCK_UNLOCK(so); in soo_ioctl()
210 *(int *)data = sbavail(&so->so_rcv); in soo_ioctl()
215 *(int *)data = sbavail(&so->so_snd); in soo_ioctl()
220 if ((so->so_snd.sb_hiwat < sbused(&so->so_snd)) || in soo_ioctl()
221 (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt)) in soo_ioctl()
224 *(int *)data = sbspace(&so->so_snd); in soo_ioctl()
228 error = fsetown(*(int *)data, &so->so_sigio); in soo_ioctl()
232 *(int *)data = fgetown(&so->so_sigio); in soo_ioctl()
236 error = fsetown(-(*(int *)data), &so->so_sigio); in soo_ioctl()
240 *(int *)data = -fgetown(&so->so_sigio); in soo_ioctl()
245 *(int *)data = (so->so_rcv.sb_state & SBS_RCVATMARK) != 0; in soo_ioctl()
254 error = ifioctl(so, cmd, data, td); in soo_ioctl()
256 CURVNET_SET(so->so_vnet); in soo_ioctl()
257 error = rtioctl_fib(cmd, data, so->so_fibnum); in soo_ioctl()
260 CURVNET_SET(so->so_vnet); in soo_ioctl()
261 error = ((*so->so_proto->pr_usrreqs->pru_control) in soo_ioctl()
262 (so, cmd, data, 0, td)); in soo_ioctl()
274 struct socket *so = fp->f_data; in soo_poll() local
278 error = mac_socket_check_poll(active_cred, so); in soo_poll()
282 return (sopoll(so, events, fp->f_cred, td)); in soo_poll()
289 struct socket *so = fp->f_data; in soo_stat() local
297 error = mac_socket_check_stat(active_cred, so); in soo_stat()
301 if (!SOLISTENING(so)) { in soo_stat()
308 sb = &so->so_rcv; in soo_stat()
315 sb = &so->so_snd; in soo_stat()
321 ub->st_uid = so->so_cred->cr_uid; in soo_stat()
322 ub->st_gid = so->so_cred->cr_gid; in soo_stat()
323 return (*so->so_proto->pr_usrreqs->pru_sense)(so, ub); in soo_stat()
336 struct socket *so; in soo_close() local
338 so = fp->f_data; in soo_close()
342 if (so) in soo_close()
343 error = soclose(so); in soo_close()
353 struct socket *so; in soo_fill_kinfo() local
357 so = fp->f_data; in soo_fill_kinfo()
358 CURVNET_SET(so->so_vnet); in soo_fill_kinfo()
360 so->so_proto->pr_domain->dom_family; in soo_fill_kinfo()
361 kif->kf_un.kf_sock.kf_sock_type0 = so->so_type; in soo_fill_kinfo()
362 kif->kf_un.kf_sock.kf_sock_protocol0 = so->so_proto->pr_protocol; in soo_fill_kinfo()
363 kif->kf_un.kf_sock.kf_sock_pcb = (uintptr_t)so->so_pcb; in soo_fill_kinfo()
368 if (so->so_pcb != NULL) { in soo_fill_kinfo()
369 inpcb = (struct inpcb *)(so->so_pcb); in soo_fill_kinfo()
373 sbused(&so->so_snd); in soo_fill_kinfo()
375 sbused(&so->so_rcv); in soo_fill_kinfo()
380 if (so->so_pcb != NULL) { in soo_fill_kinfo()
381 unpcb = (struct unpcb *)(so->so_pcb); in soo_fill_kinfo()
386 so->so_rcv.sb_state; in soo_fill_kinfo()
388 so->so_snd.sb_state; in soo_fill_kinfo()
390 sbused(&so->so_snd); in soo_fill_kinfo()
392 sbused(&so->so_rcv); in soo_fill_kinfo()
397 error = so->so_proto->pr_usrreqs->pru_sockaddr(so, &sa); in soo_fill_kinfo()
403 error = so->so_proto->pr_usrreqs->pru_peeraddr(so, &sa); in soo_fill_kinfo()
409 strncpy(kif->kf_path, so->so_proto->pr_domain->dom_name, in soo_fill_kinfo()
574 soaio_ready(struct socket *so, struct sockbuf *sb) in soaio_ready() argument
576 return (sb == &so->so_rcv ? soreadable(so) : sowriteable(so)); in soaio_ready()
580 soaio_process_job(struct socket *so, struct sockbuf *sb, struct kaiocb *job) in soaio_process_job() argument
617 if (sb == &so->so_rcv) { in soaio_process_job()
621 error = mac_socket_check_receive(fp->f_cred, so); in soaio_process_job()
625 error = soreceive(so, NULL, &uio, NULL, NULL, &flags); in soaio_process_job()
634 error = mac_socket_check_send(fp->f_cred, so); in soaio_process_job()
637 error = sosend(so, NULL, &uio, NULL, NULL, flags, td); in soaio_process_job()
640 if (error == EPIPE && (so->so_options & SO_NOSIGPIPE) == 0) { in soaio_process_job()
663 if (done == 0 || !(so->so_state & SS_NBIO)) { in soaio_process_job()
665 if (soaio_ready(so, sb)) { in soaio_process_job()
696 soaio_process_sb(struct socket *so, struct sockbuf *sb) in soaio_process_sb() argument
700 CURVNET_SET(so->so_vnet); in soaio_process_sb()
702 while (!TAILQ_EMPTY(&sb->sb_aiojobq) && soaio_ready(so, sb)) { in soaio_process_sb()
708 soaio_process_job(so, sb, job); in soaio_process_sb()
721 SOCK_LOCK(so); in soaio_process_sb()
722 sorele(so); in soaio_process_sb()
729 struct socket *so; in soaio_rcv() local
731 so = context; in soaio_rcv()
732 soaio_process_sb(so, &so->so_rcv); in soaio_rcv()
738 struct socket *so; in soaio_snd() local
740 so = context; in soaio_snd()
741 soaio_process_sb(so, &so->so_snd); in soaio_snd()
745 sowakeup_aio(struct socket *so, struct sockbuf *sb) in sowakeup_aio() argument
753 soref(so); in sowakeup_aio()
760 struct socket *so; in soo_aio_cancel() local
765 so = job->fd_file->f_data; in soo_aio_cancel()
768 sb = &so->so_rcv; in soo_aio_cancel()
771 sb = &so->so_snd; in soo_aio_cancel()
791 struct socket *so; in soo_aio_queue() local
795 so = fp->f_data; in soo_aio_queue()
796 error = (*so->so_proto->pr_usrreqs->pru_aio_queue)(so, job); in soo_aio_queue()
802 sb = &so->so_rcv; in soo_aio_queue()
805 sb = &so->so_snd; in soo_aio_queue()
816 if (soaio_ready(so, sb)) in soo_aio_queue()
817 sowakeup_aio(so, sb); in soo_aio_queue()