From: mickey Date: Sat, 30 Mar 1996 04:51:25 +0000 (+0000) Subject: Added: sysctl access to the ddb variables. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=d6c7fc58ca56e02dd88b4a7055479f7b16683256;p=openbsd Added: sysctl access to the ddb variables. Fixed: "netbsd" strings in sym table handling routines. now it is usefull to change max_{width,line} according to your real console geometry, just w/ sysctl program. --- diff --git a/sys/conf/files b/sys/conf/files index 4d790ad6dad..8ed111ccf75 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -63,6 +63,7 @@ file ddb/db_trap.c ddb file ddb/db_variables.c ddb file ddb/db_watch.c ddb file ddb/db_write_cmd.c ddb +file ddb/db_usrreq.c ddb file dev/audio.c audio needs-flag file dev/ccd.c ccd needs-flag file dev/ic/aic7xxx.c aic7xxx diff --git a/sys/ddb/db_aout.c b/sys/ddb/db_aout.c index 165d69fe518..789b6974322 100644 --- a/sys/ddb/db_aout.c +++ b/sys/ddb/db_aout.c @@ -1,4 +1,4 @@ -/* $OpenBSD: db_aout.c,v 1.4 1996/03/11 11:15:57 mickey Exp $ */ +/* $OpenBSD: db_aout.c,v 1.5 1996/03/30 04:51:28 mickey Exp $ */ /* * Mach Operating System @@ -343,10 +343,10 @@ ddb_init() extern int end; if (esym > (char *)&end) { - X_db_sym_init((int *)&end, esym, "netbsd"); + X_db_sym_init((int *)&end, esym, "bsd"); } #else - X_db_sym_init (db_symtab, 0, "netbsd"); + X_db_sym_init (db_symtab, 0, "bsd"); #endif } diff --git a/sys/ddb/db_sym.c b/sys/ddb/db_sym.c index b2abad54a7d..19dd9264ef1 100644 --- a/sys/ddb/db_sym.c +++ b/sys/ddb/db_sym.c @@ -1,4 +1,4 @@ -/* $OpenBSD: db_sym.c,v 1.5 1996/03/11 11:16:23 mickey Exp $ */ +/* $OpenBSD: db_sym.c,v 1.6 1996/03/30 04:51:28 mickey Exp $ */ /* * Mach Operating System @@ -108,7 +108,7 @@ db_del_symbol_table(name) } /* - * db_qualify("vm_map", "netbsd") returns "netbsd:vm_map". + * db_qualify("vm_map", "bsd") returns "bsd:vm_map". * * Note: return value points to static data whose content is * overwritten by each call... but in practice this seems okay. diff --git a/sys/ddb/db_usrreq.c b/sys/ddb/db_usrreq.c new file mode 100644 index 00000000000..fdc7f41ef0d --- /dev/null +++ b/sys/ddb/db_usrreq.c @@ -0,0 +1,69 @@ +/* $OpenBSD: db_usrreq.c,v 1.1 1996/03/30 04:51:31 mickey Exp $ */ + +/* + * Copyright (c) 1996 Michael Shalayeff. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Michael Shalayeff. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include + +#include + +int +ddb_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p) + int *name; + u_int namelen; + void *oldp; + size_t *oldlenp; + void *newp; + size_t newlen; + struct proc *p; +{ + /* All sysctl names at this level are terminal. */ + if (namelen != 1) + return (ENOTDIR); + + switch (name[0]) { + + case DBCTL_RADIX: + return sysctl_int(oldp, oldlenp, newp, newlen, &db_radix); + case DBCTL_MAXWIDTH: + return sysctl_int(oldp, oldlenp, newp, newlen, &db_max_width); + case DBCTL_TABSTOP: + return sysctl_int(oldp, oldlenp, newp, newlen, &db_tab_stop_width); + case DBCTL_MAXLINE: + return sysctl_int(oldp, oldlenp, newp, newlen, &db_max_line); + default: + return (EOPNOTSUPP); + } + /* NOTREACHED */ +} diff --git a/sys/ddb/db_var.h b/sys/ddb/db_var.h index a51c7dff108..439cd0c15eb 100644 --- a/sys/ddb/db_var.h +++ b/sys/ddb/db_var.h @@ -1,4 +1,4 @@ -/* $OpenBSD: db_var.h,v 1.1 1996/03/11 11:16:27 mickey Exp $ */ +/* $OpenBSD: db_var.h,v 1.2 1996/03/30 04:51:29 mickey Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff. All rights reserved. @@ -40,4 +40,30 @@ #define DB_HISTORY_SIZE 4000 #endif +#define DBCTL_RADIX 1 +#define DBCTL_MAXWIDTH 2 +#define DBCTL_MAXLINE 3 +#define DBCTL_TABSTOP 4 +#define DBCTL_MAXID 5 + +#define CTL_DDB_NAMES { \ + { NULL, 0 }, \ + { "radix", CTLTYPE_INT }, \ + { "max_width", CTLTYPE_INT }, \ + { "max_line", CTLTYPE_INT }, \ + { "tab_stop_width", CTLTYPE_INT },\ +} + +#ifdef _KERNEL +extern u_int db_maxoff; +extern int db_radix; +extern int db_max_width; +extern int db_tab_stop_width; +extern int db_max_line; + +int ddb_sysctl __P((int *, u_int, void *, size_t *, void *, size_t, + struct proc *)); +#endif + #endif /* _DDB_DB_VAR_H_ */ + diff --git a/sys/ddb/db_variables.c b/sys/ddb/db_variables.c index c59af61c14f..ccb5c64b4da 100644 --- a/sys/ddb/db_variables.c +++ b/sys/ddb/db_variables.c @@ -1,4 +1,4 @@ -/* $OpenBSD: db_variables.c,v 1.3 1996/03/11 11:16:28 mickey Exp $ */ +/* $OpenBSD: db_variables.c,v 1.4 1996/03/30 04:51:30 mickey Exp $ */ /* * Mach Operating System @@ -36,13 +36,7 @@ #include #include #include - -extern unsigned int db_maxoff; - -extern int db_radix; -extern int db_max_width; -extern int db_tab_stop_width; -extern int db_max_line; +#include struct db_variable db_vars[] = { { "radix", &db_radix, FCN_NULL }, diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 79a2fc09975..13839f7631c 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_sysctl.c,v 1.2 1996/03/03 17:19:56 niklas Exp $ */ +/* $OpenBSD: kern_sysctl.c,v 1.3 1996/03/30 04:51:32 mickey Exp $ */ /* $NetBSD: kern_sysctl.c,v 1.14 1996/02/09 18:59:52 christos Exp $ */ /*- @@ -61,6 +61,10 @@ #include #include +#ifdef DDB +#include +#endif + /* * Locking and stats */ @@ -129,6 +133,11 @@ sys___sysctl(p, v, retval) case CTL_DEBUG: fn = debug_sysctl; break; +#endif +#ifdef DDB + case CTL_DDB: + fn = ddb_sysctl; + break; #endif default: return (EOPNOTSUPP); diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h index 6c3cbd55d6b..277a085775c 100644 --- a/sys/sys/sysctl.h +++ b/sys/sys/sysctl.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sysctl.h,v 1.2 1996/03/03 12:12:22 niklas Exp $ */ +/* $OpenBSD: sysctl.h,v 1.3 1996/03/30 04:51:33 mickey Exp $ */ /* $NetBSD: sysctl.h,v 1.11 1996/02/09 18:25:39 christos Exp $ */ /* @@ -92,7 +92,8 @@ struct ctlname { #define CTL_HW 6 /* generic cpu/io */ #define CTL_MACHDEP 7 /* machine dependent */ #define CTL_USER 8 /* user-level */ -#define CTL_MAXID 9 /* number of valid top-level ids */ +#define CTL_DDB 9 /* DDB user interface, see ddb_var.h */ +#define CTL_MAXID 10 /* number of valid top-level ids */ #define CTL_NAMES { \ { 0, 0 }, \ @@ -104,6 +105,7 @@ struct ctlname { { "hw", CTLTYPE_NODE }, \ { "machdep", CTLTYPE_NODE }, \ { "user", CTLTYPE_NODE }, \ + { "ddb", CTLTYPE_NODE }, \ } /*