27 lines
540 B
C
27 lines
540 B
C
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);
|
|
}
|