Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 May 2002 15:07:23 -0700
From:      Alfred Perlstein <bright@mu.org>
To:        Doug White <dwhite@resnet.uoregon.edu>
Cc:        Zhihui Zhang <zzhang@cs.binghamton.edu>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: kernel daemon clean up
Message-ID:  <20020520220723.GB54960@elvis.mu.org>
In-Reply-To: <20020520150021.S63789-100000@resnet.uoregon.edu>
References:  <Pine.SOL.4.21.0205201646300.19638-100000@onyx> <20020520150021.S63789-100000@resnet.uoregon.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
* Doug White <dwhite@resnet.uoregon.edu> [020520 15:01] wrote:
> On Mon, 20 May 2002, Zhihui Zhang wrote:
> 
> >
> > When we reboot a machine, it seems to me that the kernel sends signal 15
> > to daemons and wait 60 seconds for them to finish. In my program, I use
> > kthread_create() to create a daemon, how to make sure that my daemon
> > finishes all its job before reboot can proceed?  Do I need to let the
> > daemon catch the signals?  I tried kill -9 (or -15) pid, the daemon does
> > not seem to respond.
> 
> I don't think kthreads can take signals (?)
> 
> Look at the code for the other kthreads that put out the 'waiting for XXX
> to finish' messages during the shutdown sequence.

They can take signals, you just need to have the upper event loop
check for signal return errors and pass PCATCH flag in with the
priority for the msleep/tsleep arguments, or use cv_wait_sig(),
make sure to pay attention to the return value from these functions
because once a signal is pending you may loop forever if you don't
break out to handle the exceptional conditions because signals are
level not edge.  I think you can also use the CURSIG macro to check
for pending signals if you don't want to yeild.

-- 
-Alfred Perlstein [alfred@freebsd.org]
'Instead of asking why a piece of software is using "1970s technology,"
 start asking why software is ignoring 30 years of accumulated wisdom.'
Tax deductible donations for FreeBSD: http://www.freebsdfoundation.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020520220723.GB54960>