diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-04-20 09:03:51 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-20 19:37:13 -0400 |
commit | aa395145165cb06a0d0885221bbe0ce4a564391d (patch) | |
tree | 118b0403621f10db8dc3dbf12079f9af5b19e05d /include | |
parent | ab9304717f7624c41927f442e6b6d418b2d8b3e4 (diff) |
net: sk_sleep() helper
Define a new function to return the waitqueue of a "struct sock".
static inline wait_queue_head_t *sk_sleep(struct sock *sk)
{
return sk->sk_sleep;
}
Change all read occurrences of sk_sleep by a call to this function.
Needed for a future RCU conversion. sk_sleep wont be a field directly
available.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/sock.h | 10 | ||||
-rw-r--r-- | include/net/tcp.h | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 56df440a950b..8ab05146a447 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -1160,6 +1160,10 @@ static inline void sk_set_socket(struct sock *sk, struct socket *sock) | |||
1160 | sk->sk_socket = sock; | 1160 | sk->sk_socket = sock; |
1161 | } | 1161 | } |
1162 | 1162 | ||
1163 | static inline wait_queue_head_t *sk_sleep(struct sock *sk) | ||
1164 | { | ||
1165 | return sk->sk_sleep; | ||
1166 | } | ||
1163 | /* Detach socket from process context. | 1167 | /* Detach socket from process context. |
1164 | * Announce socket dead, detach it from wait queue and inode. | 1168 | * Announce socket dead, detach it from wait queue and inode. |
1165 | * Note that parent inode held reference count on this struct sock, | 1169 | * Note that parent inode held reference count on this struct sock, |
@@ -1346,8 +1350,8 @@ static inline int sk_has_allocations(const struct sock *sk) | |||
1346 | * tp->rcv_nxt check sock_def_readable | 1350 | * tp->rcv_nxt check sock_def_readable |
1347 | * ... { | 1351 | * ... { |
1348 | * schedule ... | 1352 | * schedule ... |
1349 | * if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1353 | * if (sk_sleep(sk) && waitqueue_active(sk_sleep(sk))) |
1350 | * wake_up_interruptible(sk->sk_sleep) | 1354 | * wake_up_interruptible(sk_sleep(sk)) |
1351 | * ... | 1355 | * ... |
1352 | * } | 1356 | * } |
1353 | * | 1357 | * |
@@ -1368,7 +1372,7 @@ static inline int sk_has_sleeper(struct sock *sk) | |||
1368 | * This memory barrier is paired in the sock_poll_wait. | 1372 | * This memory barrier is paired in the sock_poll_wait. |
1369 | */ | 1373 | */ |
1370 | smp_mb__after_lock(); | 1374 | smp_mb__after_lock(); |
1371 | return sk->sk_sleep && waitqueue_active(sk->sk_sleep); | 1375 | return sk_sleep(sk) && waitqueue_active(sk_sleep(sk)); |
1372 | } | 1376 | } |
1373 | 1377 | ||
1374 | /** | 1378 | /** |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 70c5159f4b36..b7d83d204a93 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -939,7 +939,7 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb) | |||
939 | 939 | ||
940 | tp->ucopy.memory = 0; | 940 | tp->ucopy.memory = 0; |
941 | } else if (skb_queue_len(&tp->ucopy.prequeue) == 1) { | 941 | } else if (skb_queue_len(&tp->ucopy.prequeue) == 1) { |
942 | wake_up_interruptible_sync_poll(sk->sk_sleep, | 942 | wake_up_interruptible_sync_poll(sk_sleep(sk), |
943 | POLLIN | POLLRDNORM | POLLRDBAND); | 943 | POLLIN | POLLRDNORM | POLLRDBAND); |
944 | if (!inet_csk_ack_scheduled(sk)) | 944 | if (!inet_csk_ack_scheduled(sk)) |
945 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, | 945 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, |