About the kse signal process
David Xu
davidxu at freebsd.org
Mon Jun 30 15:23:07 PDT 2003
----- Original Message -----
From: "xiong jinshan" <xiongjinshan at yahoo.com>
To: <deischen at freebsd.org>
Cc: <threads at freebsd.org>
Sent: Monday, June 30, 2003 11:46 PM
Subject: Re: About the kse signal process
>
> --- Daniel Eischen <eischen at vigrid.com> wrote:
> > On Mon, 30 Jun 2003, xiong jinshan wrote:
> >
> > > Hi,
> > > I am wondering that the following piece of code
> > > can't work with the unix semantics. I tested it
> > with
> > > 5.1 release and i386 arch. By unix sementics, if I
> > > send the SIGALRM to this running programme, it
> > should
> > > be received by the thr_func() only, and print a
> > prompt
> > > msg on the console.
> >
> > Yes, only thr_func() should receive the alarm.
> This is the issue. Nothing printed on the console when
> I sent the signal SIGALRM, it meant that none of the
> thread received this signal.
>
> >
> > >
> > > Reguards,
> > > JinShan
> > >
> > > Ps: c code:
> > >
> > > /* vi: set ts=4 sw=4 expandtab: */
> > > #include <stdio.h>
> > > #include <signal.h>
> > > #include <pthread.h>
> > >
> > > void sigalrm_handler(int signo)
> > > {
> > > if(signo != SIGALRM)
> > > abort();
> > >
> > > printf("Received sig alarm!\n");
> > > return;
> > > }
> > >
> > > void thr_func(void)
> > > {
> > > sigset_t mask;
> > > struct sigaction sa;
> > >
> > > sigemptyset(&mask);
> > > sigaddset(&mask, SIGALRM);
> > > pthread_sigmask(SIG_UNBLOCK, &mask, NULL);
> > >
> > > memset(&sa, 0, sizeof(struct sigaction));
> > > sa.sa_handler = sigalrm_handler;
> > > sigaction(SIGALRM, &sa, NULL);
> > >
> > > while(1);
> > > }
> > >
> > > main()
> > > {
> > > int err;
> > > pthread_t pth;
> > > sigset_t mask;
> > >
> > > sigfillset(&mask);
> > > sigprocmask(SIG_BLOCK, &mask, NULL);
> > >
> > > err = pthread_create(&pth, NULL, thr_func,
> > NULL);
> > > if(err < 0) {
> > > perror("pthread_create!\n");
> > > return -1;
> > > }
> > >
> > > while(1);
> >
> > --
> > Dan Eischen
> >
>
>
Missing alarm() call ?
More information about the freebsd-threads
mailing list