1void prepare_to_wait (void *, void *, int);
2void finish_wait (void *, void *);
3extern signed long schedule_timeout (signed long);
4struct sock
5{
6  unsigned char skc_state;
7  void *sk_sleep;
8  int sk_err;
9};
10
11void
12sk_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}
27