From owner-freebsd-threads@FreeBSD.ORG Mon Jun 30 08:46:19 2003 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C176737B401 for ; Mon, 30 Jun 2003 08:46:19 -0700 (PDT) Received: from web80511.mail.yahoo.com (web80511.mail.yahoo.com [66.218.79.81]) by mx1.FreeBSD.org (Postfix) with SMTP id 0F96F43FDF for ; Mon, 30 Jun 2003 08:46:19 -0700 (PDT) (envelope-from xiongjinshan@yahoo.com) Message-ID: <20030630154618.93274.qmail@web80511.mail.yahoo.com> Received: from [211.144.73.27] by web80511.mail.yahoo.com via HTTP; Mon, 30 Jun 2003 08:46:18 PDT Date: Mon, 30 Jun 2003 08:46:18 -0700 (PDT) From: xiong jinshan To: deischen@freebsd.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii cc: threads@freebsd.org Subject: Re: About the kse signal process X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jun 2003 15:46:20 -0000 --- Daniel Eischen 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 > > #include > > #include > > > > 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 > __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com