summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorabial <abial@FreeBSD.org>1998-09-14 20:33:43 +0000
committerabial <abial@FreeBSD.org>1998-09-14 20:33:43 +0000
commitca486eae4a64a2b8938674e5131dd1ef0b364310 (patch)
tree96c29ced35a4f2a77c4597cfd84c92cdfd1e3fa9
parentc3165880f698a7f3ecd2147fe2657f3e102f90b3 (diff)
downloadFreeBSD-src-ca486eae4a64a2b8938674e5131dd1ef0b364310.zip
FreeBSD-src-ca486eae4a64a2b8938674e5131dd1ef0b364310.tar.gz
Since we have a sysctl 'machdep.msgbuf' now, let's make use of it.
-rw-r--r--release/picobsd/tinyware/dm/README15
-rw-r--r--release/picobsd/tinyware/dm/dm.c74
2 files changed, 89 insertions, 0 deletions
diff --git a/release/picobsd/tinyware/dm/README b/release/picobsd/tinyware/dm/README
new file mode 100644
index 0000000..a38101b
--- /dev/null
+++ b/release/picobsd/tinyware/dm/README
@@ -0,0 +1,15 @@
+1998.09.14, Warsaw
+
+This program replaces 'dmesg' utility, aand allows you to retrieve the
+system's message buffer without resorting to such dirty tricks as normal
+'dmesg' uses (using libkvm and /dev/kmem to directly read kernel
+memory.. *shudder*).
+
+This utility uses sysctl(3) interface. The mib variable it uses was
+recently added to the kernel sources, so if you don't mind patching your
+kernel tree, contact me directly - the patches are very small and simple.
+
+Andrzej Bialecki
+<abial@nask.pl>
+
+$Id$
diff --git a/release/picobsd/tinyware/dm/dm.c b/release/picobsd/tinyware/dm/dm.c
new file mode 100644
index 0000000..f3dc410
--- /dev/null
+++ b/release/picobsd/tinyware/dm/dm.c
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki <abial@freebsd.org>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
+ *
+ * $Id$
+ */
+
+/*
+ * Small replacement for 'dmesg'. It doesn't need libkvm nor /dev/kmem.
+ */
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int len,i;
+ char *buf,*p;
+ char *mib="machdep.msgbuf";
+
+ /* We use sysctlbyname, because the oid is unknown (OID_AUTO) */
+
+ /* get the buffer size */
+ i=sysctlbyname(mib,NULL,&len,NULL,NULL);
+ if(i) {
+ perror("buffer sizing");
+ exit(-1);
+ }
+ buf=(char *)malloc(len*sizeof(char));
+ i=sysctlbyname(mib,buf,&len,NULL,NULL);
+ if(i) {
+ perror("retrieving data");
+ exit(-1);
+ }
+ p=buf;
+ i=0;
+ while(p<(buf+len)) {
+ switch(*p) {
+ case '\0':
+ /* skip initial NULLs */
+ break;
+ default:
+ putchar(*p);
+ }
+ p++;
+ }
+ if(*--p!='\n') putchar('\n');
+ free(buf);
+ exit(0);
+}
OpenPOWER on IntegriCloud