Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Aug 2001 17:27:10 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Greg Lehey <grog@FreeBSD.org>
Cc:        cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org
Subject:   Re: cvs commit: src/sys/conf options src/sys/i386/conf NOTES src
Message-ID:  <XFMail.010823172710.jhb@FreeBSD.org>
In-Reply-To: <20010824095113.E9221@wantadilla.lemis.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 24-Aug-01 Greg Lehey wrote:
> On Thursday, 23 August 2001 at 13:32:21 -0700, John Baldwin wrote:
>> jhb         2001/08/23 13:32:21 PDT
>>
>>   Modified files:
>>     sys/conf             options
>>     sys/i386/conf        NOTES
>>     sys/kern             kern_shutdown.c
>>     sys/sys              param.h
>>   Log:
>>   Add a new kernel option RESTARTABLE_PANICS.  If this option is present,
>>   then one can restart from a panic by resetting the panicstr variable to
>>   NULL.  This commit conditionalizes the previously committed functionality
>>   on this variable.  It also removes the __dead2 attribute from the panic()
>>   function so that when one continues from a panic() the behavior will
>>   be predictable.
> 
> The only way I can see to restart from a panic is to enter the
> debugger and then return, and your code seems to bear this out.  Am I
> missing something?  I would think that we can always return from the
> debugger if we want to continue, and that the RESTARTABLE_PANICS and
> check for null format string are not necessary.  Are you concerned
> about people who will return from the debugger when they don't mean
> to?  There are plenty of other ways to shoot down the system from the
> debugger.

Err. If you continue from the debugger, the panic() function calls boot() which
reboots the system.  If you chagne panicstr to NULL, then we don't call boot()
but return from panic(), thus effectively turning the panic() into a Debugger().

#ifdef RESTARTABLE_PANICS
        /* See if the user aborted the panic, in which case we continue. */
        if (panicstr == NULL) {
#ifdef SMP
                atomic_store_rel_int(&panic_cpu, NOCPU);
#endif
                return;
        }
#endif
#endif
        boot(bootopt);

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.Baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

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




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