| // Copyright 2011 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package runtime | |
| type sigTabT struct { | |
| flags int | |
| name string | |
| } | |
| // Incoming notes are compared against this table using strncmp, so the | |
| // order matters: longer patterns must appear before their prefixes. | |
| // There are _SIG constants in os2_plan9.go for the table index of some | |
| // of these. | |
| // | |
| // If you add entries to this table, you must respect the prefix ordering | |
| // and also update the constant values is os2_plan9.go. | |
| var sigtable = [...]sigTabT{ | |
| // Traps that we cannot be recovered. | |
| {_SigThrow, "sys: trap: debug exception"}, | |
| {_SigThrow, "sys: trap: invalid opcode"}, | |
| // We can recover from some memory errors in runtime·sigpanic. | |
| {_SigPanic, "sys: trap: fault read"}, // SIGRFAULT | |
| {_SigPanic, "sys: trap: fault write"}, // SIGWFAULT | |
| // We can also recover from math errors. | |
| {_SigPanic, "sys: trap: divide error"}, // SIGINTDIV | |
| {_SigPanic, "sys: fp:"}, // SIGFLOAT | |
| // All other traps are normally handled as if they were marked SigThrow. | |
| // We mark them SigPanic here so that debug.SetPanicOnFault will work. | |
| {_SigPanic, "sys: trap:"}, // SIGTRAP | |
| // Writes to a closed pipe can be handled if desired, otherwise they're ignored. | |
| {_SigNotify, "sys: write on closed pipe"}, | |
| // Other system notes are more serious and cannot be recovered. | |
| {_SigThrow, "sys:"}, | |
| // Issued to all other procs when calling runtime·exit. | |
| {_SigGoExit, "go: exit "}, | |
| // Kill is sent by external programs to cause an exit. | |
| {_SigKill, "kill"}, | |
| // Interrupts can be handled if desired, otherwise they cause an exit. | |
| {_SigNotify + _SigKill, "interrupt"}, | |
| {_SigNotify + _SigKill, "hangup"}, | |
| // Alarms can be handled if desired, otherwise they're ignored. | |
| {_SigNotify, "alarm"}, | |
| // Aborts can be handled if desired, otherwise they cause a stack trace. | |
| {_SigNotify + _SigThrow, "abort"}, | |
| } |