void prepare_to_wait (void *, void *, int); | |
void finish_wait (void *, void *); | |
extern signed long schedule_timeout (signed long); | |
struct sock | |
{ | |
unsigned char skc_state; | |
void *sk_sleep; | |
int sk_err; | |
}; | |
void | |
sk_stream_wait_connect (struct sock *sk, long *timeo_p) | |
{ | |
int done; | |
int wait; | |
do | |
{ | |
if ((1 << sk->skc_state) & ~12) | |
return; | |
prepare_to_wait (sk->sk_sleep, &wait, 1); | |
*(timeo_p) = schedule_timeout (0); | |
done = !sk->sk_err; | |
finish_wait (sk->sk_sleep, &wait); | |
} | |
while (!done); | |
} |