+/*
+ * Configuration options end here -- the following defines do not
+ * generally need customization.
+ */
+
+#define odxprint(topic, fmt, ...) \
+ do \
+ if (dyndebug_config.dyndebug_##topic) \
+ odxprint_fun(fmt "\n", ##__VA_ARGS__); \
+ while (0)
+
+void odxprint_fun(const char *fmt, ...);
+void fshow_fun(void *ignored, const char *fmt, ...);
+
+/* Flags defined in a structure to avoid code duplication between
+ * declaration and definition. */
+extern struct dyndebug_config {
+ int dyndebug_fshow;
+ int dyndebug_fshow_signal;
+ int dyndebug_gencgc_verbose;
+ int dyndebug_safepoints;
+ int dyndebug_seh;
+ int dyndebug_misc;
+ int dyndebug_pagefaults;
+ int dyndebug_backtrace_when_lost;
+ int dyndebug_sleep_when_lost;
+} dyndebug_config;
+
+#ifdef LISP_FEATURE_GENCGC
+extern int gencgc_verbose;
+#endif
+
+void dyndebug_init(void);