Lines Matching defs:so

54 	struct sonode *so;
64 so = socket_create(domain, type, protocol, NULL, NULL, version, flags,
66 if (so == NULL) {
86 so = socket_create(domain, type, protocol, NULL,
88 if (so == NULL)
95 so->so_mode |= SM_KERNEL;
97 *ksp = SOTOKS(so);
509 struct sonode *so;
517 so = KSTOSO(ks);
519 return (socket_shutdown(so, how, cr));
525 struct sonode *so;
526 so = KSTOSO(ks);
531 mutex_enter(&so->so_lock);
534 mutex_exit(&so->so_lock);
538 so->so_state |= SS_CLOSING;
540 if (so->so_count > 1) {
541 mutex_enter(&so->so_acceptq_lock);
542 cv_broadcast(&so->so_acceptq_cv);
543 mutex_exit(&so->so_acceptq_lock);
544 cv_broadcast(&so->so_rcv_cv);
545 cv_broadcast(&so->so_state_cv);
546 cv_broadcast(&so->so_single_cv);
547 cv_broadcast(&so->so_read_cv);
548 cv_broadcast(&so->so_snd_cv);
549 cv_broadcast(&so->so_copy_cv);
551 while (so->so_count > 1)
552 cv_wait(&so->so_closing_cv, &so->so_lock);
554 mutex_exit(&so->so_lock);
558 (void) socket_close(so, 0, cr);
559 socket_destroy(so);
568 struct sonode *so;
576 so = KSTOSO(ks);
581 return (socket_getsockname(so, addr, addrlen, cr));
588 struct sonode *so;
596 so = KSTOSO(ks);
601 return (socket_getpeername(so, addr, addrlen, B_FALSE, cr));
608 struct sonode *so;
616 so = KSTOSO(ks);
623 return (socket_getsockopt(so, level, optname, optval,
631 struct sonode *so;
639 so = KSTOSO(ks);
644 return (socket_setsockopt(so, level, optname, optval,
653 struct sonode *so;
661 so = KSTOSO(ks);
666 mutex_enter(&so->so_lock);
667 bzero(&(so->so_ksock_callbacks), sizeof (ksocket_callbacks_t));
668 so->so_ksock_cb_arg = NULL;
669 mutex_exit(&so->so_lock);
671 mutex_enter(&so->so_lock);
672 SETCALLBACK(so, cb, connected, KSOCKET_CB_CONNECTED)
673 SETCALLBACK(so, cb, connectfailed, KSOCKET_CB_CONNECTFAILED)
674 SETCALLBACK(so, cb, disconnected, KSOCKET_CB_DISCONNECTED)
675 SETCALLBACK(so, cb, newdata, KSOCKET_CB_NEWDATA)
676 SETCALLBACK(so, cb, newconn, KSOCKET_CB_NEWCONN)
677 SETCALLBACK(so, cb, cansend, KSOCKET_CB_CANSEND)
678 SETCALLBACK(so, cb, oobdata, KSOCKET_CB_OOBDATA)
679 SETCALLBACK(so, cb, cantsendmore, KSOCKET_CB_CANTSENDMORE)
680 SETCALLBACK(so, cb, cantrecvmore, KSOCKET_CB_CANTRECVMORE)
681 so->so_ksock_cb_arg = arg;
682 mutex_exit(&so->so_lock);
690 struct sonode *so;
699 so = KSTOSO(ks);
707 rval = socket_ioctl(so, cmd, arg,
726 * Basically, setup just enough poll data structures so
733 struct sonode *so;
749 so = KSTOSO(ks);
754 * pass "anyyet">0 to socket_poll so it can skip
776 error = socket_poll(so, (short)events, (timo == 0),
785 * Need to block. Did not get *revents, so the
811 while (!(so->so_state & SS_CLOSING)) {
816 error = socket_poll(so, (short)events, 0,
865 struct sonode *so;
877 so = KSTOSO(ks);
880 error = socket_getsockopt(so, SOL_SOCKET, SO_SND_COPYAVOID,
893 error = socket_sendmblk(so, msg, flags, cr, mpp);
902 struct sonode *so;
903 so = KSTOSO(ks);
905 if (!mutex_owned(&so->so_lock)) {
906 mutex_enter(&so->so_lock);
907 so->so_count++;
908 mutex_exit(&so->so_lock);
910 so->so_count++;
916 struct sonode *so;
918 so = KSTOSO(ks);
922 if (so->so_count < 2)
925 if (!mutex_owned(&so->so_lock)) {
926 mutex_enter(&so->so_lock);
927 if (--so->so_count == 1)
928 cv_signal(&so->so_closing_cv);
929 mutex_exit(&so->so_lock);
931 if (--so->so_count == 1)
932 cv_signal(&so->so_closing_cv);