Added: sysctl access to the ddb variables.
authormickey <mickey@openbsd.org>
Sat, 30 Mar 1996 04:51:25 +0000 (04:51 +0000)
committermickey <mickey@openbsd.org>
Sat, 30 Mar 1996 04:51:25 +0000 (04:51 +0000)
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.

sys/conf/files
sys/ddb/db_aout.c
sys/ddb/db_sym.c
sys/ddb/db_usrreq.c [new file with mode: 0644]
sys/ddb/db_var.h
sys/ddb/db_variables.c
sys/kern/kern_sysctl.c
sys/sys/sysctl.h

index 4d790ad..8ed111c 100644 (file)
@@ -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
index 165d69f..789b697 100644 (file)
@@ -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
 }
 
index b2abad5..19dd926 100644 (file)
@@ -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 (file)
index 0000000..fdc7f41
--- /dev/null
@@ -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 <sys/param.h>
+#include <sys/types.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <vm/vm.h>
+#include <sys/sysctl.h>
+
+#include <ddb/db_var.h>
+
+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 */
+}
index a51c7df..439cd0c 100644 (file)
@@ -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.
 #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_ */
+
index c59af61..ccb5c64 100644 (file)
@@ -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
 #include <ddb/db_command.h>
 #include <ddb/db_sym.h>
 #include <ddb/db_extern.h>
-
-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 <ddb/db_var.h>
 
 struct db_variable db_vars[] = {
        { "radix",      &db_radix, FCN_NULL },
index 79a2fc0..13839f7 100644 (file)
@@ -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 $        */
 
 /*-
 #include <sys/mount.h>
 #include <sys/syscallargs.h>
 
+#ifdef DDB
+#include <ddb/db_var.h>
+#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);
index 6c3cbd5..277a085 100644 (file)
@@ -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 }, \
 }
 
 /*