Lines Matching full:so

121 	struct socket *so = fp->f_data;
125 error = mac_socket_check_receive(active_cred, so);
129 error = soreceive(so, 0, uio, 0, 0, 0);
137 struct socket *so = fp->f_data;
141 error = mac_socket_check_send(active_cred, so);
145 error = sousrsend(so, NULL, uio, NULL, 0, NULL);
153 struct socket *so = fp->f_data;
158 SOCK_LOCK(so);
160 so->so_state |= SS_NBIO;
162 so->so_state &= ~SS_NBIO;
163 SOCK_UNLOCK(so);
168 SOCK_LOCK(so);
169 so->so_state |= SS_ASYNC;
170 if (SOLISTENING(so)) {
171 so->sol_sbrcv_flags |= SB_ASYNC;
172 so->sol_sbsnd_flags |= SB_ASYNC;
174 SOCK_RECVBUF_LOCK(so);
175 so->so_rcv.sb_flags |= SB_ASYNC;
176 SOCK_RECVBUF_UNLOCK(so);
177 SOCK_SENDBUF_LOCK(so);
178 so->so_snd.sb_flags |= SB_ASYNC;
179 SOCK_SENDBUF_UNLOCK(so);
181 SOCK_UNLOCK(so);
183 SOCK_LOCK(so);
184 so->so_state &= ~SS_ASYNC;
185 if (SOLISTENING(so)) {
186 so->sol_sbrcv_flags &= ~SB_ASYNC;
187 so->sol_sbsnd_flags &= ~SB_ASYNC;
189 SOCK_RECVBUF_LOCK(so);
190 so->so_rcv.sb_flags &= ~SB_ASYNC;
191 SOCK_RECVBUF_UNLOCK(so);
192 SOCK_SENDBUF_LOCK(so);
193 so->so_snd.sb_flags &= ~SB_ASYNC;
194 SOCK_SENDBUF_UNLOCK(so);
196 SOCK_UNLOCK(so);
201 SOCK_RECVBUF_LOCK(so);
202 if (SOLISTENING(so)) {
205 *(int *)data = sbavail(&so->so_rcv) - so->so_rcv.sb_ctl;
207 SOCK_RECVBUF_UNLOCK(so);
212 if (SOLISTENING(so)) {
215 *(int *)data = sbavail(&so->so_snd);
221 if (SOLISTENING(so)) {
224 if ((so->so_snd.sb_hiwat < sbused(&so->so_snd)) ||
225 (so->so_snd.sb_mbmax < so->so_snd.sb_mbcnt)) {
228 *(int *)data = sbspace(&so->so_snd);
234 error = fsetown(*(int *)data, &so->so_sigio);
238 *(int *)data = fgetown(&so->so_sigio);
242 error = fsetown(-(*(int *)data), &so->so_sigio);
246 *(int *)data = -fgetown(&so->so_sigio);
251 if (SOLISTENING(so)) {
254 *(int *)data = (so->so_rcv.sb_state & SBS_RCVATMARK) != 0;
264 error = ifioctl(so, cmd, data, td);
266 CURVNET_SET(so->so_vnet);
267 error = rtioctl_fib(cmd, data, so->so_fibnum);
270 CURVNET_SET(so->so_vnet);
271 error = so->so_proto->pr_control(so, cmd, data, 0, td);
283 struct socket *so = fp->f_data;
287 error = mac_socket_check_poll(active_cred, so);
291 return (sopoll(so, events, fp->f_cred, td));
297 struct socket *so = fp->f_data;
303 error = mac_socket_check_stat(active_cred, so);
307 SOCK_LOCK(so);
308 if (!SOLISTENING(so)) {
315 sb = &so->so_rcv;
316 SOCK_RECVBUF_LOCK(so);
320 SOCK_RECVBUF_UNLOCK(so);
322 sb = &so->so_snd;
323 SOCK_SENDBUF_LOCK(so);
326 SOCK_SENDBUF_UNLOCK(so);
328 ub->st_uid = so->so_cred->cr_uid;
329 ub->st_gid = so->so_cred->cr_gid;
330 if (so->so_proto->pr_sense)
331 error = so->so_proto->pr_sense(so, ub);
332 SOCK_UNLOCK(so);
346 struct socket *so;
348 so = fp->f_data;
352 if (so)
353 error = soclose(so);
360 struct socket *so;
363 so = fp->f_data;
364 if (so->so_proto->pr_chmod != NULL)
365 error = so->so_proto->pr_chmod(so, mode, cred, td);
376 struct socket *so;
380 so = fp->f_data;
381 CURVNET_SET(so->so_vnet);
383 so->so_proto->pr_domain->dom_family;
384 kif->kf_un.kf_sock.kf_sock_type0 = so->so_type;
385 kif->kf_un.kf_sock.kf_sock_protocol0 = so->so_proto->pr_protocol;
386 kif->kf_un.kf_sock.kf_sock_pcb = (uintptr_t)so->so_pcb;
391 kif->kf_un.kf_sock.kf_sock_inpcb = (uintptr_t)so->so_pcb;
393 so->so_rcv.sb_state;
395 so->so_snd.sb_state;
397 sbused(&so->so_snd);
399 sbused(&so->so_rcv);
402 if (so->so_pcb != NULL) {
403 unpcb = (struct unpcb *)(so->so_pcb);
408 so->so_rcv.sb_state;
410 so->so_snd.sb_state;
412 sbused(&so->so_snd);
414 sbused(&so->so_rcv);
419 error = sosockaddr(so, (struct sockaddr *)&ss);
425 error = sopeeraddr(so, (struct sockaddr *)&ss);
430 strncpy(kif->kf_path, so->so_proto->pr_domain->dom_name,
438 * completed by the AIO job so far.
476 * Grab an extra reference on the daemon's vmspace so that it
541 * created, so stop.
593 soaio_ready(struct socket *so, struct sockbuf *sb)
595 return (sb == &so->so_rcv ? soreadable(so) : sowriteable(so));
599 soaio_process_job(struct socket *so, sb_which which, struct kaiocb *job)
603 struct sockbuf *sb = sobuf(so, which);
611 SOCK_BUF_UNLOCK(so, which);
631 if (sb == &so->so_rcv) {
634 error = mac_socket_check_receive(fp->f_cred, so);
638 error = soreceive(so, NULL, job->uiop, NULL, NULL,
647 error = mac_socket_check_send(fp->f_cred, so);
650 error = sousrsend(so, NULL, job->uiop, NULL, flags,
671 SOCK_BUF_LOCK(so, which);
672 if (done == 0 || !(so->so_state & SS_NBIO)) {
674 if (soaio_ready(so, sb)) {
676 SOCK_BUF_UNLOCK(so, which);
681 SOCK_BUF_UNLOCK(so, which);
686 SOCK_BUF_LOCK(so, which);
692 SOCK_BUF_UNLOCK(so, which);
701 SOCK_BUF_LOCK(so, which);
705 soaio_process_sb(struct socket *so, sb_which which)
708 struct sockbuf *sb = sobuf(so, which);
710 CURVNET_SET(so->so_vnet);
711 SOCK_BUF_LOCK(so, which);
712 while (!TAILQ_EMPTY(&sb->sb_aiojobq) && soaio_ready(so, sb)) {
718 soaio_process_job(so, which, job);
723 * ready so set SB_AIO to request a wakeup when the socket
729 SOCK_BUF_UNLOCK(so, which);
731 sorele(so);
738 struct socket *so;
740 so = context;
741 soaio_process_sb(so, SO_RCV);
747 struct socket *so;
749 so = context;
750 soaio_process_sb(so, SO_SND);
754 sowakeup_aio(struct socket *so, sb_which which)
756 struct sockbuf *sb = sobuf(so, which);
758 SOCK_BUF_LOCK_ASSERT(so, which);
764 soref(so);
771 struct socket *so;
777 so = job->fd_file->f_data;
780 sb = &so->so_rcv;
784 sb = &so->so_snd;
788 SOCK_BUF_LOCK(so, which);
793 SOCK_BUF_UNLOCK(so, which);
805 struct socket *so;
810 so = fp->f_data;
811 error = so->so_proto->pr_aio_queue(so, job);
818 SOCK_RECVBUF_LOCK(so);
819 sb = &so->so_rcv;
823 SOCK_SENDBUF_LOCK(so);
824 sb = &so->so_snd;
831 if (SOLISTENING(so)) {
832 SOCK_BUF_UNLOCK(so, which);
840 if (soaio_ready(so, sb))
841 sowakeup_aio(so, which);
845 SOCK_BUF_UNLOCK(so, which);