Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: From: "Jimen.Ching" To: cygwin AT sourceware DOT cygnus DOT com Subject: ITIMER_REAL Date: Wed, 5 Jul 2000 11:06:12 -1000 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2650.21) Content-Type: multipart/mixed; boundary="----_=_NextPart_000_01BFE6C4.D955A3A0" ------_=_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" ITIMER_REAL

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-- ------_=_NextPart_000_01BFE6C4.D955A3A0 Content-Type: application/octet-stream; name="sigalrm.c" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="sigalrm.c" #include =0A= #include =0A= #include =0A= #include =0A= #include =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--