From: jca Date: Tue, 12 Jul 2022 17:12:31 +0000 (+0000) Subject: Add db_rint(), an MI interface to db_enter() copied from kdbrint() in vax code X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=cb52a4d974a514b32522060247925ec275b651a0;p=openbsd Add db_rint(), an MI interface to db_enter() copied from kdbrint() in vax code 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@ --- diff --git a/sys/conf/files b/sys/conf/files index 74be07c1e64..faa5090b9f8 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -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 index 00000000000..6d3a8556eb0 --- /dev/null +++ b/sys/ddb/db_rint.c @@ -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 +#include + +#include + +/* + * 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; +} diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 7afec86714b..81c81e172ee 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -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