Subject: RE: [b18] Can't interrupt "sleep 30"
From: [email-masked] (Sergey Okhapkin)

13 May 1997 10:03:49 -0700
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
Original-To: "[email-masked]" <[email-masked]>,
        "'Francis Litterio'"
	 <[email-masked]>
Original-Cc: "'Geoffrey Noer'" <[email-masked]>
Encoding: 38 TEXT
Original-Sender: [email-masked]

Francis Litterio wrote:
> Using b18, type
>
> 	sleep 30
>
> to bash, then type ^C to interrupt it.  Nothing happens, and after 30
> seconds elapses, bash prompts again.

Ok, it's my fault :-) While modifying signal support for B18 I forgot about 
sleep() and usleep() syscalls. Thank you for this bug report. The functions 
sleep() and usleep() in winsup/signal.cc must be the following one:

extern "C"
unsigned int
sleep (unsigned int seconds)
{
  syscall_printf ("sleep (%d);\n", seconds);
  WaitForSingleObject (u->signal_arrived, seconds * 1000);
  syscall_printf ("0 = sleep (%d)\n", seconds);
  return 0;
}

extern "C"
unsigned int
usleep (unsigned int useconds)
{
  syscall_printf ("usleep (%d)\n", useconds);
  WaitForSingleObject (u->signal_arrived, (useconds + 500) / 1000);
  syscall_printf ("0 = usleep (%d)\n", useconds);
  return 0;
}

--
Sergey Okhapkin
Moscow, Russia
Looking for a job.

-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".