diff options
Diffstat (limited to 'src/runtime/signals_plan9.h')
-rw-r--r-- | src/runtime/signals_plan9.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/runtime/signals_plan9.h b/src/runtime/signals_plan9.h new file mode 100644 index 000000000..4ee8e542c --- /dev/null +++ b/src/runtime/signals_plan9.h @@ -0,0 +1,63 @@ +// 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. + +#include "textflag.h" + +#define N SigNotify +#define K SigKill +#define T SigThrow +#define P SigPanic +#define E SigGoExit + +// Incoming notes are compared against this table using strncmp, so the +// order matters: longer patterns must appear before their prefixes. +// There are #defined SIG constants in os_plan9.h 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 os_plan9.h. + +#pragma dataflag NOPTR +SigTab runtime·sigtab[] = { + // Traps that we cannot be recovered. + T, "sys: trap: debug exception", + T, "sys: trap: invalid opcode", + + // We can recover from some memory errors in runtime·sigpanic. + P, "sys: trap: fault read addr", // SIGRFAULT + P, "sys: trap: fault write addr", // SIGWFAULT + + // We can also recover from math errors. + P, "sys: trap: divide error", // SIGINTDIV + P, "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. + P, "sys: trap:", // SIGTRAP + + // Writes to a closed pipe can be handled if desired, otherwise they're ignored. + N, "sys: write on closed pipe", + + // Other system notes are more serious and cannot be recovered. + T, "sys:", + + // Issued to all other procs when calling runtime·exit. + E, "go: exit ", + + // Kill is sent by external programs to cause an exit. + K, "kill", + + // Interrupts can be handled if desired, otherwise they cause an exit. + N+K, "interrupt", + N+K, "hangup", + + // Alarms can be handled if desired, otherwise they're ignored. + N, "alarm", +}; + +#undef N +#undef K +#undef T +#undef P +#undef E |