aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/sys.h
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2017-03-21 10:48:15 +0100
committerBjörn-Egil Dahlberg <[email protected]>2017-03-22 10:59:06 +0100
commit0dec7ddb341b2b7d2643f86dd9e9497b3f5268a7 (patch)
treeddd716eb7fa7a1b9bb7a66b9c014990f69077777 /erts/emulator/beam/sys.h
parent303f4781e485f66e1eb6c5db77ff9523e5f69b7e (diff)
downloadotp-0dec7ddb341b2b7d2643f86dd9e9497b3f5268a7.tar.gz
otp-0dec7ddb341b2b7d2643f86dd9e9497b3f5268a7.tar.bz2
otp-0dec7ddb341b2b7d2643f86dd9e9497b3f5268a7.zip
erts: Don't allocate memory during signal handling
Allocations and message sending are now scheduled by a signal, via a signal state bitmap, instead of doing it directly in the signal handler.
Diffstat (limited to 'erts/emulator/beam/sys.h')
-rw-r--r--erts/emulator/beam/sys.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/erts/emulator/beam/sys.h b/erts/emulator/beam/sys.h
index c6ea8049c3..144dd60d21 100644
--- a/erts/emulator/beam/sys.h
+++ b/erts/emulator/beam/sys.h
@@ -487,6 +487,12 @@ extern volatile int erts_break_requested;
void erts_do_break_handling(void);
#endif
+#if !defined(ERTS_SMP) && !defined(__WIN32__)
+extern volatile Uint erts_signal_state;
+#define ERTS_SIGNAL_STATE erts_signal_state
+void erts_handle_signal_state(void);
+#endif
+
#ifdef ERTS_SMP
extern erts_smp_atomic32_t erts_writing_erl_crash_dump;
extern erts_tsd_key_t erts_is_crash_dumping_key;