111
|
1 void prepare_to_wait (void *, void *, int);
|
|
2 void finish_wait (void *, void *);
|
|
3 extern signed long schedule_timeout (signed long);
|
|
4 struct sock
|
|
5 {
|
|
6 unsigned char skc_state;
|
|
7 void *sk_sleep;
|
|
8 int sk_err;
|
|
9 };
|
|
10
|
|
11 void
|
|
12 sk_stream_wait_connect (struct sock *sk, long *timeo_p)
|
|
13 {
|
|
14 int done;
|
|
15 int wait;
|
|
16 do
|
|
17 {
|
|
18 if ((1 << sk->skc_state) & ~12)
|
|
19 return;
|
|
20 prepare_to_wait (sk->sk_sleep, &wait, 1);
|
|
21 *(timeo_p) = schedule_timeout (0);
|
|
22 done = !sk->sk_err;
|
|
23 finish_wait (sk->sk_sleep, &wait);
|
|
24 }
|
|
25 while (!done);
|
|
26 }
|