summaryrefslogtreecommitdiff
path: root/kern/xpr.h
diff options
context:
space:
mode:
authorThomas Bushnell <thomas@gnu.org>1997-02-25 21:28:37 +0000
committerThomas Bushnell <thomas@gnu.org>1997-02-25 21:28:37 +0000
commitf07a4c844da9f0ecae5bbee1ab94be56505f26f7 (patch)
tree12b07c7e578fc1a5f53dbfde2632408491ff2a70 /kern/xpr.h
Initial source
Diffstat (limited to 'kern/xpr.h')
-rw-r--r--kern/xpr.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/kern/xpr.h b/kern/xpr.h
new file mode 100644
index 0000000..5a95555
--- /dev/null
+++ b/kern/xpr.h
@@ -0,0 +1,101 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 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 Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * Include file for xpr circular buffer silent tracing.
+ *
+ */
+/*
+ * If the kernel flag XPRDEBUG is set, the XPR macro is enabled. The
+ * macro should be invoked something like the following:
+ * XPR(XPR_SYSCALLS, ("syscall: %d, 0x%x\n", syscallno, arg1);
+ * which will expand into the following code:
+ * if (xprflags & XPR_SYSCALLS)
+ * xpr("syscall: %d, 0x%x\n", syscallno, arg1);
+ * Xpr will log the pointer to the printf string and up to 6 arguements,
+ * along with a timestamp and cpuinfo (for multi-processor systems), into
+ * a circular buffer. The actual printf processing is delayed until after
+ * the buffer has been collected. It is assumed that the text/data segments
+ * of the kernel can easily be reconstructed in a post-processor which
+ * performs the printf processing.
+ *
+ * If the XPRDEBUG compilation switch is not set, the XPR macro expands
+ * to nothing.
+ */
+
+#ifndef _KERN_XPR_H_
+#define _KERN_XPR_H_
+
+#ifdef KERNEL
+#include <xpr_debug.h>
+#else KERNEL
+#include <sys/features.h>
+#endif KERNEL
+
+#include <machine/xpr.h>
+
+#if XPR_DEBUG
+
+#define XPR(flags,xprargs) if(xprflags&flags) xpr xprargs
+
+extern int xprflags;
+/*
+ * flags for message types.
+ */
+#define XPR_SYSCALLS 0x00000001
+#define XPR_TRAPS 0x00000002
+#define XPR_SCHED 0x00000004
+#define XPR_NPTCP 0x00000008
+#define XPR_NP 0x00000010
+#define XPR_TCP 0x00000020
+
+#define XPR_VM_OBJECT (1 << 8)
+#define XPR_VM_OBJECT_CACHE (1 << 9)
+#define XPR_VM_PAGE (1 << 10)
+#define XPR_VM_PAGEOUT (1 << 11)
+#define XPR_MEMORY_OBJECT (1 << 12)
+#define XPR_VM_FAULT (1 << 13)
+#define XPR_INODE_PAGER (1 << 14)
+#define XPR_INODE_PAGER_DATA (1 << 15)
+
+#else XPR_DEBUG
+#define XPR(flags,xprargs)
+#endif XPR_DEBUG
+
+struct xprbuf {
+ char *msg;
+ int arg1,arg2,arg3,arg4,arg5;
+ int timestamp;
+ int cpuinfo;
+};
+
+#ifndef WANT_PROTOTYPES
+extern void xpr();
+#endif
+extern void xpr_dump();
+extern void xprinit();
+extern void xprbootstrap();
+
+#endif _KERN_XPR_H_