Add db_rint(), an MI interface to db_enter() copied from kdbrint() in vax code
authorjca <jca@openbsd.org>
Tue, 12 Jul 2022 17:12:31 +0000 (17:12 +0000)
committerjca <jca@openbsd.org>
Tue, 12 Jul 2022 17:12:31 +0000 (17:12 +0000)
If ddb.console is set and your serial console driver uses it, db_rint(),
lets you enter ddb(4) by typing the ESC D escape sequence.  This is
useful for drivers like sfuart(4) where the hardware doesn't have a true
BREAK mechanism.

Suggested by miod@, ok kettenis@ miod@

sys/conf/files
sys/ddb/db_rint.c [new file with mode: 0644]
sys/sys/systm.h

index 74be07c..faa5090 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: files,v 1.714 2022/03/19 10:25:09 stsp Exp $
+#      $OpenBSD: files,v 1.715 2022/07/12 17:12:31 jca Exp $
 #      $NetBSD: files,v 1.87 1996/05/19 17:17:50 jonathan Exp $
 
 #      @(#)files.newconf       7.5 (Berkeley) 5/10/93
@@ -637,6 +637,7 @@ file ddb/db_input.c                 ddb
 file ddb/db_lex.c                      ddb
 file ddb/db_output.c                   ddb
 file ddb/db_prof.c                     ddb & ddbprof & !gprof
+file ddb/db_rint.c                     ddb
 file ddb/db_run.c                      ddb
 file ddb/db_sym.c                      ddb
 file ddb/db_trap.c                     ddb
diff --git a/sys/ddb/db_rint.c b/sys/ddb/db_rint.c
new file mode 100644 (file)
index 0000000..6d3a855
--- /dev/null
@@ -0,0 +1,67 @@
+/*     $OpenBSD: db_rint.c,v 1.1 2022/07/12 17:12:31 jca Exp $ */
+/*     $NetBSD: db_machdep.c,v 1.17 1999/06/20 00:58:23 ragge Exp $    */
+
+/* 
+ * Mach Operating System
+ * Copyright (c) 1991,1990 Carnegie Mellon University
+ * All Rights Reserved.
+ * 
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ * 
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ * 
+ * Carnegie Mellon requests users of this software to return to
+ * 
+ *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
+ *  School of Computer Science
+ *  Carnegie Mellon University
+ *  Pittsburgh PA 15213-3890
+ * 
+ * any improvements or extensions that they make and grant Carnegie the
+ * rights to redistribute these changes.
+ */
+
+#include <sys/types.h>
+#include <sys/systm.h>
+
+#include <ddb/db_var.h>
+
+/*
+ * db_rint: enters ddb(4) if the "ESC D" sequence is matched.
+ * Returns:
+ * - 0 if the character isn't part of the escape sequence
+ * - 1 if the character is part of the escape sequence and should be skipped
+ * - 2 if the character isn't the end of an escape sequence, and an ESC
+ *   character should be inserted before it.
+ */
+int
+db_rint(int c)
+{
+       static int ddbescape = 0;
+
+       if (ddbescape && ((c & 0x7f) == 'D')) {
+               if (db_console)
+                       db_enter();
+               ddbescape = 0;
+               return 1;
+       }
+
+       if ((ddbescape == 0) && ((c & 0x7f) == 27)) {
+               ddbescape = 1;
+               return 1;
+       }
+
+       if (ddbescape) {
+               ddbescape = 0;
+               return 2;
+       }
+
+       ddbescape = 0;
+       return 0;
+}
index 7afec86..81c81e1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: systm.h,v 1.156 2022/07/05 15:06:16 visa Exp $        */
+/*     $OpenBSD: systm.h,v 1.157 2022/07/12 17:12:31 jca Exp $ */
 /*     $NetBSD: systm.h,v 1.50 1996/06/09 04:55:09 briggs Exp $        */
 
 /*-
@@ -401,6 +401,7 @@ extern int (*mountroot)(void);
 #if defined(DDB)
 /* debugger entry points */
 void   db_enter(void); /* in DDB only */
+int    db_rint(int);
 #endif
 
 #ifdef BOOT_CONFIG