Mail Archives: cygwin/2000/07/05/17:23:25
------_=_NextPart_000_01BFE6C4.D955A3A0
Content-Type: multipart/alternative;
boundary="----_=_NextPart_001_01BFE6C4.D955A3A0"
------_=_NextPart_001_01BFE6C4.D955A3A0
Content-Type: text/plain;
charset="iso-8859-1"
Hi all,
The attached program is supposed to wait 3 seconds and wait for a key press.
But it takes 3 minutes before the message is printed. Can someone tell me
if I am doing something wrong?
--jc
--
jimen AT adtech-inc DOT com Adtech, Inc. (808) 734-3300
------_=_NextPart_001_01BFE6C4.D955A3A0
Content-Type: text/html;
charset="iso-8859-1"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2650.12">
<TITLE>ITIMER_REAL</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=2>Hi all,</FONT>
</P>
<P><FONT SIZE=2>The attached program is supposed to wait 3 seconds and wait for a key press.</FONT>
<BR><FONT SIZE=2>But it takes 3 minutes before the message is printed. Can someone tell me</FONT>
<BR><FONT SIZE=2>if I am doing something wrong?</FONT>
</P>
<P><FONT SIZE=2>--jc</FONT>
<BR><FONT SIZE=2>--</FONT>
<BR><FONT SIZE=2>jimen AT adtech-inc DOT com Adtech, Inc. (808) 734-3300</FONT>
</P>
<P><FONT FACE="Arial" SIZE=2 COLOR="#000000"></FONT>
</BODY>
</HTML>
------_=_NextPart_001_01BFE6C4.D955A3A0--
------_=_NextPart_000_01BFE6C4.D955A3A0
Content-Type: application/octet-stream;
name="sigalrm.c"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="sigalrm.c"
#include <sys/time.h>=0A=
#include <signal.h>=0A=
#include <time.h>=0A=
#include <stdio.h>=0A=
#include <stdlib.h>=0A=
=0A=
#ifndef SA_RESTART=0A=
#define SA_RESTART 0=0A=
#endif=0A=
=0A=
unsigned jiffies;=0A=
static sigset_t posix_signal_mask;=0A=
=0A=
static void=0A=
clock_start(int us)=0A=
{=0A=
struct itimerval new_it;=0A=
=0A=
new_it.it_value.tv_sec =3D 0;=0A=
new_it.it_value.tv_usec =3D us;=0A=
new_it.it_interval.tv_sec =3D 0;=0A=
new_it.it_interval.tv_usec =3D us;=0A=
setitimer(ITIMER_REAL, &new_it, 0);=0A=
}=0A=
=0A=
static void=0A=
isr_enable(unsigned level)=0A=
{=0A=
if (level =3D=3D 0)=0A=
{=0A=
sigprocmask(SIG_UNBLOCK, &posix_signal_mask, 0);=0A=
}=0A=
else=0A=
{=0A=
sigprocmask(SIG_BLOCK, &posix_signal_mask, 0);=0A=
}=0A=
}=0A=
=0A=
static void=0A=
isr_handler(int sig_num)=0A=
{=0A=
switch(sig_num)=0A=
{=0A=
case SIGCHLD:=0A=
break;=0A=
case SIGALRM:=0A=
++jiffies;=0A=
break;=0A=
default:=0A=
break;=0A=
}=0A=
}=0A=
=0A=
void=0A=
posix_init(void)=0A=
{=0A=
struct sigaction act;=0A=
sigset_t mask;=0A=
=0A=
/*=0A=
* Block all the signals except SIGTRAP (for the debugger)=0A=
* and fatal error signals.=0A=
*/=0A=
sigfillset(&posix_signal_mask);=0A=
sigdelset(&posix_signal_mask, SIGTRAP);=0A=
sigdelset(&posix_signal_mask, SIGABRT);=0A=
#ifdef SIGIOT=0A=
sigdelset(&posix_signal_mask, SIGIOT);=0A=
#endif=0A=
sigdelset(&posix_signal_mask, SIGCONT);=0A=
sigdelset(&posix_signal_mask, SIGSEGV);=0A=
sigdelset(&posix_signal_mask, SIGBUS);=0A=
sigdelset(&posix_signal_mask, SIGFPE);=0A=
=0A=
isr_enable(1);=0A=
=0A=
/* Unblock signals. */=0A=
mask =3D posix_signal_mask;=0A=
sigprocmask(SIG_UNBLOCK, &mask, 0);=0A=
=0A=
act.sa_handler =3D isr_handler;=0A=
act.sa_mask =3D mask;=0A=
act.sa_flags =3D SA_RESTART;=0A=
=0A=
sigaction(SIGHUP, &act, 0);=0A=
sigaction(SIGINT, &act, 0);=0A=
sigaction(SIGQUIT, &act, 0);=0A=
sigaction(SIGILL, &act, 0);=0A=
#ifdef SIGEMT=0A=
sigaction(SIGEMT, &act, 0);=0A=
#endif=0A=
sigaction(SIGFPE, &act, 0);=0A=
sigaction(SIGKILL, &act, 0);=0A=
sigaction(SIGBUS, &act, 0);=0A=
sigaction(SIGSEGV, &act, 0);=0A=
#ifdef SIGSYS=0A=
sigaction(SIGSYS, &act, 0);=0A=
#endif=0A=
sigaction(SIGPIPE, &act, 0);=0A=
sigaction(SIGALRM, &act, 0);=0A=
sigaction(SIGTERM, &act, 0);=0A=
sigaction(SIGUSR1, &act, 0);=0A=
sigaction(SIGUSR2, &act, 0);=0A=
sigaction(SIGCHLD, &act, 0);=0A=
sigaction(SIGCLD, &act, 0);=0A=
#ifdef SIGPWR=0A=
sigaction(SIGPWR, &act, 0);=0A=
#endif=0A=
sigaction(SIGVTALRM, &act, 0);=0A=
sigaction(SIGPROF, &act, 0);=0A=
sigaction(SIGIO, &act, 0);=0A=
sigaction(SIGWINCH, &act, 0);=0A=
sigaction(SIGSTOP, &act, 0);=0A=
sigaction(SIGTTIN, &act, 0);=0A=
sigaction(SIGTTOU, &act, 0);=0A=
sigaction(SIGURG, &act, 0);=0A=
#ifdef SIGLOST=0A=
sigaction(SIGLOST, &act, 0);=0A=
#endif=0A=
=0A=
clock_start(1000);=0A=
}=0A=
=0A=
int=0A=
main(int argc, char *argv[])=0A=
{=0A=
posix_init();=0A=
=0A=
while (jiffies < 3000);=0A=
=0A=
printf("Hit any key to quit...\n");=0A=
while (1)=0A=
{=0A=
if (getchar() > 0)=0A=
break;=0A=
}=0A=
return 0;=0A=
}=0A=
------_=_NextPart_000_01BFE6C4.D955A3A0
Content-Type: text/plain; charset=us-ascii
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
------_=_NextPart_000_01BFE6C4.D955A3A0--
- Raw text -