[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-threads
Subject:    Re: threads/75273: FBSD 5.3  libpthread (KSE) bug
From:       "Enoch W." <ixew () hotmail ! com>
Date:       2004-12-22 4:30:35
Message-ID: 200412220430.iBM4UZaY074828 () freefall ! freebsd ! org
[Download RAW message or body]

The following reply was made to PR threads/75273; it has been noted by GNATS.

From: "Enoch W." <ixew@hotmail.com>
To: <freebsd-gnats-submit@FreeBSD.org>, <ixew@hotmail.com>
Cc:
Subject: Re: threads/75273: FBSD 5.3  libpthread (KSE) bug
Date: Tue, 21 Dec 2004 23:26:28 -0500

 This is a multi-part message in MIME format.

 ------=_NextPart_000_0002_01C4E7B4.7F0A0870
 Content-Type: multipart/alternative;
 	boundary="----=_NextPart_001_0003_01C4E7B4.7F0B8F10"


 ------=_NextPart_001_0003_01C4E7B4.7F0B8F10
 Content-Type: text/plain;
 	charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable

 Problem demo is attached, as requested. TIA, Enoch.
 ------=_NextPart_001_0003_01C4E7B4.7F0B8F10
 Content-Type: text/html;
 	charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML><HEAD>
 <META http-equiv=Content-Type content="text/html;  charset=iso-8859-1">
 <META content="MSHTML 6.00.2900.2523" name=GENERATOR>
 <STYLE></STYLE>
 </HEAD>
 <BODY bgColor=#ffffff>
 <DIV><FONT face=Arial size=2>Problem demo is attached, as requested.  TIA, 
 Enoch.</FONT></DIV></BODY></HTML>

 ------=_NextPart_001_0003_01C4E7B4.7F0B8F10--

 ------=_NextPart_000_0002_01C4E7B4.7F0A0870
 Content-Type: application/octet-stream;
 	name="demo.c"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="demo.c"

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <signal.h>
 #include <errno.h>
 #include <pthread.h>
 
 #define ASSRET(cond) do { \
   if (!(cond)) { \
     fprintf(stderr,  "ASSRET ERROR @ %d -> %s\n", __LINE__, \
 	    strerror(ret == -1 ? errno : ret)); \
     exit(EXIT_FAILURE); \
   } \
 } while (0)
 
 int tock;
 
 void tick()
 {
   tock = 1;
 }
 
 void *pulse(void *arg)
 {
   int ret;
   struct itimerval it;
   sigset_t set;
 
   sigemptyset(&set);
   sigaddset(&set, SIGALRM);
   ret = sigprocmask(SIG_BLOCK, &set, NULL);
   ASSRET(ret == 0);
   sigemptyset(&set);
 
   it.it_interval.tv_sec = 1;
   it.it_interval.tv_usec = 0;
   it.it_value.tv_sec = 1;
   it.it_value.tv_usec = 0;
   ret = setitimer(ITIMER_REAL, &it, NULL);
   ASSRET(ret == 0);
 
   while (1) {
     while (!tock)
       sigsuspend(&set);
     tock = 0;
     putchar('*');
     fflush(stdout);
   }
 }
 
 int main()
 {
   int ret;
   pthread_attr_t attr;
   pthread_t thread;
 
   ret = pthread_attr_init(&attr);
   ASSRET(ret == 0);
   ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
   ASSRET(ret == 0);
 
   signal(SIGALRM, tick);
 
   ret = pthread_create(&thread, NULL, pulse, NULL);
   ASSRET(ret == 0);
 
   printf("Press Enter to cancel the pulse() thread\n");
   while (getchar() != '\n');
 
   ret = pthread_cancel(thread);
   ASSRET(ret == 0);
   ret = pthread_join(thread, NULL);
   ASSRET(ret == 0);
 
   printf("Press Enter to end\n");
   while (getchar() != '\n');
   return 0;
 }

 ------=_NextPart_000_0002_01C4E7B4.7F0A0870
 Content-Type: application/octet-stream;
 	name="demo.mk"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="demo.mk"

 demo: demo.c
 	$(CC) -Wall -g -odemo -pthread demo.c

 ------=_NextPart_000_0002_01C4E7B4.7F0A0870--
_______________________________________________
freebsd-threads@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-threads
To unsubscribe, send any mail to "freebsd-threads-unsubscribe@freebsd.org"
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic