Lines Matching full:panic
31 * When the operating system detects that it is in an invalid state, a panic
34 * a system panic: recording information about the panic in memory (and thus
37 * system to be in one of four states with respect to the panic code:
39 * CALM - the state of the system prior to any thread initiating a panic
42 * a system panic records information about the cause of the panic
52 * The panic code itself must be re-entrant because actions taken during any
53 * state may lead to another system panic. Additionally, any Solaris
54 * thread may initiate a panic at any time, and so we must have synchronization
56 * The panic code makes use of a special locking primitive, a trigger, to
59 * each transition between the four states. When a thread enters the panic
65 * presumes a panic is underway and simply spins. Unfortunately, since we
68 * There are two common reasons for re-entering the panic code once a panic
71 * routine will invoke panic(); (2) if the clock routine decides that sync
72 * or dump is not making progress, it will invoke panic() to force a timeout.
74 * unrelated panic while sync or dump is still underway, is extremely unlikely.
79 * The panic code is entered via a call directly to the vpanic() function,
80 * or its varargs wrappers panic() and cmn_err(9F). The vpanic routine
84 * the common panicsys() routine. The first thread to initiate a panic
86 * the panic code itself does not overwrite valuable data on that thread's
96 * Every thread which initiates a panic has its T_PANIC flag set so we can
101 * reboots. We allow the panic_thread to store its register set and panic
104 * state at the time of the panic. If we do get a dump, the panic buffer
106 * therein (see <sys/panic.h>).
119 * indicate a soft c, and thus the verb and adjective forms of 'panic' are
121 * the ill-conceived "panicing" and "panic'd" is discouraged.
147 #include <sys/panic.h>
153 * Panic variables which are set once during the QUIESCE state by the
154 * first thread to initiate a panic. These are examined by post-mortem
155 * debugging tools; the inconsistent use of 'panic' versus 'panic_' in
163 label_t panic_pcb; /* t_pcb at time of panic */
167 clock_t panic_lbolt; /* lbolt at time of panic */
168 int64_t panic_lbolt64; /* lbolt64 at time of panic */
169 hrtime_t panic_hrtime; /* hrtime at time of panic */
170 timespec_t panic_hrestime; /* hrestime at time of panic */
171 int panic_ipl; /* ipl on panic_cpu at time of panic */
178 * Panic variables which can be set via /etc/system or patched while
181 char *panic_bootstr = NULL; /* mdboot string to use after panic */
182 int panic_bootfcn = AD_BOOT; /* mdboot function to use after panic */
188 * The do_polled_io flag is set by the panic code to inform the SCSI subsystem
195 * panic subsystem that it should not attempt an initial debug_enter.
200 * Triggers for panic state transitions:
258 * Record one-time panic information and quiesce the other CPUs. in panicsys()
259 * Then print out the panic message and stack trace. in panicsys()
332 * A hypervisor panic originates outside of Solaris, so we in panicsys()
333 * don't want to prepend the panic message with misleading in panicsys()
358 debug_enter("panic: entering debugger " in panicsys()
361 debug_enter("panic: entering debugger " in panicsys()
376 * will re-enter panic if we are not making progress with dump. in panicsys()
389 debug_enter("panic: entering debugger (continue to reboot)"); in panicsys()
408 panic(const char *format, ...) in panic() function