Lines Matching +full:mostly +full:- +full:generic
1 // SPDX-License-Identifier: GPL-2.0
5 * Generic stream handling routines. These are generic for most
6 * protocols. Even IP. Tonight 8-).
7 * This is used because TCP, LLC (others too) layer all have mostly
13 * Alan Cox <alan@lxorguk.ukuu.org.uk> (Borrowed comments 8-))
25 * sk_stream_write_space - stream socket write_space callback.
36 struct socket *sock = sk->sk_socket; in sk_stream_write_space()
40 clear_bit(SOCK_NOSPACE, &sock->flags); in sk_stream_write_space()
43 wq = rcu_dereference(sk->sk_wq); in sk_stream_write_space()
45 wake_up_interruptible_poll(&wq->wait, EPOLLOUT | in sk_stream_write_space()
47 if (wq && wq->fasync_list && !(sk->sk_shutdown & SEND_SHUTDOWN)) in sk_stream_write_space()
54 * sk_stream_wait_connect - Wait for a socket to get into the connected state
70 if ((1 << sk->sk_state) & ~(TCPF_SYN_SENT | TCPF_SYN_RECV)) in sk_stream_wait_connect()
71 return -EPIPE; in sk_stream_wait_connect()
73 return -EAGAIN; in sk_stream_wait_connect()
78 sk->sk_write_pending++; in sk_stream_wait_connect()
80 !READ_ONCE(sk->sk_err) && in sk_stream_wait_connect()
81 !((1 << READ_ONCE(sk->sk_state)) & in sk_stream_wait_connect()
84 sk->sk_write_pending--; in sk_stream_wait_connect()
91 * sk_stream_closing - Return 1 if we still have things to send in our buffers.
96 return (1 << READ_ONCE(sk->sk_state)) & in sk_stream_closing()
118 * sk_stream_wait_memory - Wait for more memory for a socket
137 if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN)) in sk_stream_wait_memory()
147 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); in sk_stream_wait_memory()
148 sk->sk_write_pending++; in sk_stream_wait_memory()
149 ret = sk_wait_event(sk, ¤t_timeo, READ_ONCE(sk->sk_err) || in sk_stream_wait_memory()
150 (READ_ONCE(sk->sk_shutdown) & SEND_SHUTDOWN) || in sk_stream_wait_memory()
153 sk->sk_write_pending--; in sk_stream_wait_memory()
158 vm_wait -= current_timeo; in sk_stream_wait_memory()
161 (current_timeo -= vm_wait) < 0) in sk_stream_wait_memory()
173 err = -EPIPE; in sk_stream_wait_memory()
181 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); in sk_stream_wait_memory()
182 err = -EAGAIN; in sk_stream_wait_memory()
192 if (err == -EPIPE) in sk_stream_error()
193 err = sock_error(sk) ? : -EPIPE; in sk_stream_error()
194 if (err == -EPIPE && !(flags & MSG_NOSIGNAL)) in sk_stream_error()
203 __skb_queue_purge(&sk->sk_receive_queue); in sk_stream_kill_queues()
209 skb_queue_purge(&sk->sk_error_queue); in sk_stream_kill_queues()
212 WARN_ON_ONCE(!skb_queue_empty(&sk->sk_write_queue)); in sk_stream_kill_queues()
217 WARN_ON_ONCE(sk->sk_wmem_queued); in sk_stream_kill_queues()