summaryrefslogtreecommitdiff
path: root/include/mach_debug
diff options
context:
space:
mode:
Diffstat (limited to 'include/mach_debug')
-rw-r--r--include/mach_debug/hash_info.h41
-rw-r--r--include/mach_debug/ipc_info.h100
-rw-r--r--include/mach_debug/mach_debug.defs241
-rw-r--r--include/mach_debug/mach_debug_types.defs65
-rw-r--r--include/mach_debug/mach_debug_types.h40
-rw-r--r--include/mach_debug/pc_info.h43
-rw-r--r--include/mach_debug/vm_info.h132
-rw-r--r--include/mach_debug/zone_info.h61
8 files changed, 723 insertions, 0 deletions
diff --git a/include/mach_debug/hash_info.h b/include/mach_debug/hash_info.h
new file mode 100644
index 0000000..19a039f
--- /dev/null
+++ b/include/mach_debug/hash_info.h
@@ -0,0 +1,41 @@
+/*
+ * 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 Mellon
+ * the rights to redistribute these changes.
+ */
+
+#ifndef _MACH_DEBUG_HASH_INFO_H_
+#define _MACH_DEBUG_HASH_INFO_H_
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+typedef struct hash_info_bucket {
+ natural_t hib_count; /* number of records in bucket */
+} hash_info_bucket_t;
+
+typedef hash_info_bucket_t *hash_info_bucket_array_t;
+
+#endif _MACH_DEBUG_HASH_INFO_H_
diff --git a/include/mach_debug/ipc_info.h b/include/mach_debug/ipc_info.h
new file mode 100644
index 0000000..8d2cafe
--- /dev/null
+++ b/include/mach_debug/ipc_info.h
@@ -0,0 +1,100 @@
+/*
+ * 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 Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * File: mach_debug/ipc_info.h
+ * Author: Rich Draves
+ * Date: March, 1990
+ *
+ * Definitions for the IPC debugging interface.
+ */
+
+#ifndef _MACH_DEBUG_IPC_INFO_H_
+#define _MACH_DEBUG_IPC_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/port.h>
+#include <mach/machine/vm_types.h>
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+
+typedef struct ipc_info_space {
+ natural_t iis_genno_mask; /* generation number mask */
+ natural_t iis_table_size; /* size of table */
+ natural_t iis_table_next; /* next possible size of table */
+ natural_t iis_tree_size; /* size of tree */
+ natural_t iis_tree_small; /* # of small entries in tree */
+ natural_t iis_tree_hash; /* # of hashed entries in tree */
+} ipc_info_space_t;
+
+
+typedef struct ipc_info_name {
+ mach_port_t iin_name; /* port name, including gen number */
+/*boolean_t*/integer_t iin_collision; /* collision at this entry? */
+/*boolean_t*/integer_t iin_compat; /* is this a compat-mode entry? */
+/*boolean_t*/integer_t iin_marequest; /* extant msg-accepted request? */
+ mach_port_type_t iin_type; /* straight port type */
+ mach_port_urefs_t iin_urefs; /* user-references */
+ vm_offset_t iin_object; /* object pointer */
+ natural_t iin_next; /* marequest/next in free list */
+ natural_t iin_hash; /* hash index */
+} ipc_info_name_t;
+
+typedef ipc_info_name_t *ipc_info_name_array_t;
+
+
+typedef struct ipc_info_tree_name {
+ ipc_info_name_t iitn_name;
+ mach_port_t iitn_lchild; /* name of left child */
+ mach_port_t iitn_rchild; /* name of right child */
+} ipc_info_tree_name_t;
+
+typedef ipc_info_tree_name_t *ipc_info_tree_name_array_t;
+
+/*
+ * Type definitions for mach_port_kernel_object.
+ * By remarkable coincidence, these closely resemble
+ * the IKOT_* definitions in ipc/ipc_kobject.h.
+ */
+
+#define IPC_INFO_TYPE_NONE 0
+#define IPC_INFO_TYPE_THREAD 1
+#define IPC_INFO_TYPE_TASK 2
+#define IPC_INFO_TYPE_HOST 3
+#define IPC_INFO_TYPE_HOST_PRIV 4
+#define IPC_INFO_TYPE_PROCESSOR 5
+#define IPC_INFO_TYPE_PSET 6
+#define IPC_INFO_TYPE_PSET_NAME 7
+#define IPC_INFO_TYPE_PAGER 8
+#define IPC_INFO_TYPE_PAGING_REQUEST 9
+#define IPC_INFO_TYPE_DEVICE 10
+#define IPC_INFO_TYPE_XMM_PAGER 11
+#define IPC_INFO_TYPE_PAGING_NAME 12
+
+#endif _MACH_DEBUG_IPC_INFO_H_
diff --git a/include/mach_debug/mach_debug.defs b/include/mach_debug/mach_debug.defs
new file mode 100644
index 0000000..7221034
--- /dev/null
+++ b/include/mach_debug/mach_debug.defs
@@ -0,0 +1,241 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988 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.
+ */
+/*
+ * Matchmaker definitions file for Mach kernel debugging interface.
+ */
+
+#ifdef MACH_KERNEL
+#include <mach_ipc_debug.h>
+#include <mach_vm_debug.h>
+#include <mach_kdb.h>
+#endif
+
+subsystem
+#if KERNEL_SERVER
+ KernelServer
+#endif KERNEL_SERVER
+ mach_debug 3000;
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+#include <mach_debug/mach_debug_types.defs>
+
+skip; /* host_ipc_statistics */
+skip; /* host_ipc_statistics_reset */
+skip; /* host_callout_info */
+skip; /* host_callout_statistics */
+skip; /* host_callout_statistics_reset */
+
+/*
+ * Returns information about the memory allocation zones.
+ */
+routine host_zone_info(
+ host : host_t;
+ out names : zone_name_array_t,
+ CountInOut, Dealloc;
+ out info : zone_info_array_t,
+ CountInOut, Dealloc);
+
+skip; /* host_ipc_bucket_info */
+
+#if !defined(MACH_IPC_DEBUG) || MACH_IPC_DEBUG
+
+/*
+ * Returns the exact number of extant send rights
+ * for the given receive right.
+ */
+
+routine mach_port_get_srights(
+ task : ipc_space_t;
+ name : mach_port_name_t;
+ out srights : mach_port_rights_t);
+
+/*
+ * Returns information about the global reverse hash table.
+ */
+
+routine host_ipc_hash_info(
+ host : host_t;
+ out info : hash_info_bucket_array_t,
+ CountInOut, Dealloc);
+
+/*
+ * Returns information about the marequest hash table.
+ */
+
+routine host_ipc_marequest_info(
+ host : host_t;
+ out max_requests : unsigned;
+ out info : hash_info_bucket_array_t,
+ CountInOut, Dealloc);
+
+/*
+ * Returns information about an IPC space.
+ */
+
+routine mach_port_space_info(
+ task : ipc_space_t;
+ out info : ipc_info_space_t;
+ out table_info : ipc_info_name_array_t,
+ CountInOut, Dealloc;
+ out tree_info : ipc_info_tree_name_array_t,
+ CountInOut, Dealloc);
+
+/*
+ * Returns information about the dead-name requests
+ * registered with the named receive right.
+ */
+
+routine mach_port_dnrequest_info(
+ task : ipc_space_t;
+ name : mach_port_name_t;
+ out total : unsigned; /* total size of table */
+ out used : unsigned); /* amount used */
+
+#else !defined(MACH_IPC_DEBUG) || MACH_IPC_DEBUG
+skip; /* mach_port_get_srights */
+skip; /* host_ipc_hash_info */
+skip; /* host_ipc_marequest_info */
+skip; /* mach_port_space_info */
+skip; /* mach_port_dnrequest_info */
+#endif !defined(MACH_IPC_DEBUG) || MACH_IPC_DEBUG
+
+skip; /* mach_vm_region_info */
+skip; /* vm_mapped_pages_info */
+
+/*
+ * Returns stack usage information:
+ * reserved Amount of stack space reserved for pcb.
+ * total Number of stacks.
+ * space Total VM space for stacks.
+ * resident Resident VM space for stacks.
+ * maxusage Maximum amount of stack used.
+ * maxstack Address in the kernel of the largest stack.
+ */
+
+routine host_stack_usage(
+ host : host_t;
+ out reserved : vm_size_t;
+ out total : unsigned;
+ out space : vm_size_t;
+ out resident : vm_size_t;
+ out maxusage : vm_size_t;
+ out maxstack : vm_offset_t);
+
+routine processor_set_stack_usage(
+ pset : processor_set_name_t;
+ out total : unsigned;
+ out space : vm_size_t;
+ out resident : vm_size_t;
+ out maxusage : vm_size_t;
+ out maxstack : vm_offset_t);
+
+#if !defined(MACH_VM_DEBUG) || MACH_VM_DEBUG
+
+/*
+ * Returns information about the global VP table.
+ */
+
+routine host_virtual_physical_table_info(
+ host : host_t;
+ out info : hash_info_bucket_array_t,
+ CountInOut, Dealloc);
+
+#else !defined(MACH_VM_DEBUG) || MACH_VM_DEBUG
+skip; /* host_virtual_physical_table_info */
+#endif !defined(MACH_VM_DEBUG) || MACH_VM_DEBUG
+
+#if !defined(MACH_KDB) || MACH_KDB
+/*
+ * Loads a symbol table for an external file into the kernel debugger.
+ * The symbol table data is an array of characters. It is assumed that
+ * the caller and the kernel debugger agree on its format.
+ */
+
+routine host_load_symbol_table(
+ host : host_priv_t;
+ task : task_t;
+ name : symtab_name_t;
+ symtab : pointer_t);
+
+#else !defined(MACH_KDB) || MACH_KDB
+skip; /* host_load_symbol_table */
+#endif !defined(MACH_KDB) || MACH_KDB
+
+#if !defined(MACH_IPC_DEBUG) || MACH_IPC_DEBUG
+
+/*
+ * Return the type and address of the kernel object
+ * that the given send/receive right represents.
+ */
+
+routine mach_port_kernel_object(
+ task : ipc_space_t;
+ name : mach_port_name_t;
+ out object_type : unsigned;
+ out object_addr : vm_offset_t);
+
+#else !defined(MACH_IPC_DEBUG) || MACH_IPC_DEBUG
+skip; /* mach_port_kernel_object */
+#endif !defined(MACH_IPC_DEBUG) || MACH_IPC_DEBUG
+
+#if !defined(MACH_VM_DEBUG) || MACH_VM_DEBUG
+
+/*
+ * Returns information about a region of memory.
+ */
+
+routine mach_vm_region_info(
+ task : vm_task_t;
+ address : vm_address_t;
+ out region : vm_region_info_t;
+ /* avoid out-translation of the argument */
+ out object : memory_object_name_t =
+ MACH_MSG_TYPE_MOVE_SEND
+ ctype: mach_port_t);
+
+routine mach_vm_object_info(
+ object : memory_object_name_t;
+ out info : vm_object_info_t;
+ /* avoid out-translation of the argument */
+ out shadow : memory_object_name_t =
+ MACH_MSG_TYPE_MOVE_SEND
+ ctype: mach_port_t;
+ /* avoid out-translation of the argument */
+ out copy : memory_object_name_t =
+ MACH_MSG_TYPE_MOVE_SEND
+ ctype: mach_port_t);
+
+routine mach_vm_object_pages(
+ object : memory_object_name_t;
+ out pages : vm_page_info_array_t,
+ CountInOut, Dealloc);
+
+#else !defined(MACH_VM_DEBUG) || MACH_VM_DEBUG
+skip; /* mach_vm_region_info */
+skip; /* mach_vm_object_info */
+skip; /* mach_vm_object_pages */
+#endif !defined(MACH_VM_DEBUG) || MACH_VM_DEBUG
diff --git a/include/mach_debug/mach_debug_types.defs b/include/mach_debug/mach_debug_types.defs
new file mode 100644
index 0000000..64564ab
--- /dev/null
+++ b/include/mach_debug/mach_debug_types.defs
@@ -0,0 +1,65 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988 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.
+ */
+/*
+ * Mach kernel debugging interface type declarations
+ */
+
+#ifndef _MACH_DEBUG_MACH_DEBUG_TYPES_DEFS_
+#define _MACH_DEBUG_MACH_DEBUG_TYPES_DEFS_
+
+#include <mach/std_types.defs>
+
+type zone_name_t = struct[80] of char;
+type zone_name_array_t = array[] of zone_name_t;
+
+type zone_info_t = struct[9] of integer_t;
+type zone_info_array_t = array[] of zone_info_t;
+
+type hash_info_bucket_t = struct[1] of natural_t;
+type hash_info_bucket_array_t = array[] of hash_info_bucket_t;
+
+type ipc_info_space_t = struct[6] of natural_t;
+
+type ipc_info_name_t = struct[9] of natural_t;
+type ipc_info_name_array_t = array[] of ipc_info_name_t;
+
+type ipc_info_tree_name_t = struct[11] of natural_t;
+type ipc_info_tree_name_array_t = array[] of ipc_info_tree_name_t;
+
+type vm_region_info_t = struct[11] of natural_t;
+type vm_region_info_array_t = array[] of vm_region_info_t;
+
+type vm_object_info_t = struct[14] of natural_t;
+type vm_object_info_array_t = array[] of vm_object_info_t;
+
+type vm_page_info_t = struct[6] of natural_t;
+type vm_page_info_array_t = array[] of vm_page_info_t;
+
+type symtab_name_t = (MACH_MSG_TYPE_STRING_C, 8*32);
+
+import <mach_debug/mach_debug_types.h>;
+
+#endif _MACH_DEBUG_MACH_DEBUG_TYPES_DEFS_
diff --git a/include/mach_debug/mach_debug_types.h b/include/mach_debug/mach_debug_types.h
new file mode 100644
index 0000000..9eb8954
--- /dev/null
+++ b/include/mach_debug/mach_debug_types.h
@@ -0,0 +1,40 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988 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.
+ */
+/*
+ * Mach kernel debugging interface type declarations
+ */
+
+#ifndef _MACH_DEBUG_MACH_DEBUG_TYPES_H_
+#define _MACH_DEBUG_MACH_DEBUG_TYPES_H_
+
+#include <mach_debug/ipc_info.h>
+#include <mach_debug/vm_info.h>
+#include <mach_debug/zone_info.h>
+#include <mach_debug/hash_info.h>
+
+typedef char symtab_name_t[32];
+
+#endif _MACH_DEBUG_MACH_DEBUG_TYPES_H_
diff --git a/include/mach_debug/pc_info.h b/include/mach_debug/pc_info.h
new file mode 100644
index 0000000..bc43fa8
--- /dev/null
+++ b/include/mach_debug/pc_info.h
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+/*
+ * File: mach_debug/pc_info.h
+ * Author: Brian Bershad
+ * Date: January 1992
+ *
+ * Definitions for the PC sampling interface.
+ */
+
+#ifndef _MACH_DEBUG_PC_INFO_H_
+#define _MACH_DEBUG_PC_INFO_H_
+
+
+typedef struct sampled_pc {
+ task_t task;
+ thread_t thread;
+ vm_offset_t pc;
+} sampled_pc_t;
+
+typedef sampled_pc_t *sampled_pc_array_t;
+typedef unsigned int sampled_pc_seqno_t;
+
+#endif _MACH_DEBUG_PC_INFO_H_
diff --git a/include/mach_debug/vm_info.h b/include/mach_debug/vm_info.h
new file mode 100644
index 0000000..3800cbd
--- /dev/null
+++ b/include/mach_debug/vm_info.h
@@ -0,0 +1,132 @@
+/*
+ * 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 Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * File: mach_debug/vm_info.h
+ * Author: Rich Draves
+ * Date: March, 1990
+ *
+ * Definitions for the VM debugging interface.
+ */
+
+#ifndef _MACH_DEBUG_VM_INFO_H_
+#define _MACH_DEBUG_VM_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/machine/vm_types.h>
+#include <mach/vm_inherit.h>
+#include <mach/vm_prot.h>
+#include <mach/memory_object.h>
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+typedef struct vm_region_info {
+ vm_offset_t vri_start; /* start of region */
+ vm_offset_t vri_end; /* end of region */
+
+/*vm_prot_t*/natural_t vri_protection; /* protection code */
+/*vm_prot_t*/natural_t vri_max_protection; /* maximum protection */
+/*vm_inherit_t*/natural_t vri_inheritance; /* inheritance */
+ natural_t vri_wired_count; /* number of times wired */
+ natural_t vri_user_wired_count; /* number of times user has wired */
+
+ vm_offset_t vri_object; /* the mapped object */
+ vm_offset_t vri_offset; /* offset into object */
+/*boolean_t*/integer_t vri_needs_copy; /* does object need to be copied? */
+ natural_t vri_sharing; /* share map references */
+} vm_region_info_t;
+
+typedef vm_region_info_t *vm_region_info_array_t;
+
+
+typedef natural_t vm_object_info_state_t;
+
+#define VOI_STATE_PAGER_CREATED 0x00000001
+#define VOI_STATE_PAGER_INITIALIZED 0x00000002
+#define VOI_STATE_PAGER_READY 0x00000004
+#define VOI_STATE_CAN_PERSIST 0x00000008
+#define VOI_STATE_INTERNAL 0x00000010
+#define VOI_STATE_TEMPORARY 0x00000020
+#define VOI_STATE_ALIVE 0x00000040
+#define VOI_STATE_LOCK_IN_PROGRESS 0x00000080
+#define VOI_STATE_LOCK_RESTART 0x00000100
+#define VOI_STATE_USE_OLD_PAGEOUT 0x00000200
+
+typedef struct vm_object_info {
+ vm_offset_t voi_object; /* this object */
+ vm_size_t voi_pagesize; /* object's page size */
+ vm_size_t voi_size; /* object size (valid if internal) */
+ natural_t voi_ref_count; /* number of references */
+ natural_t voi_resident_page_count; /* number of resident pages */
+ natural_t voi_absent_count; /* number requested but not filled */
+ vm_offset_t voi_copy; /* copy object */
+ vm_offset_t voi_shadow; /* shadow object */
+ vm_offset_t voi_shadow_offset; /* offset into shadow object */
+ vm_offset_t voi_paging_offset; /* offset into memory object */
+/*memory_object_copy_strategy_t*/integer_t voi_copy_strategy;
+ /* how to handle data copy */
+ vm_offset_t voi_last_alloc; /* offset of last allocation */
+ natural_t voi_paging_in_progress; /* paging references */
+ vm_object_info_state_t voi_state; /* random state bits */
+} vm_object_info_t;
+
+typedef vm_object_info_t *vm_object_info_array_t;
+
+
+typedef natural_t vm_page_info_state_t;
+
+#define VPI_STATE_BUSY 0x00000001
+#define VPI_STATE_WANTED 0x00000002
+#define VPI_STATE_TABLED 0x00000004
+#define VPI_STATE_FICTITIOUS 0x00000008
+#define VPI_STATE_PRIVATE 0x00000010
+#define VPI_STATE_ABSENT 0x00000020
+#define VPI_STATE_ERROR 0x00000040
+#define VPI_STATE_DIRTY 0x00000080
+#define VPI_STATE_PRECIOUS 0x00000100
+#define VPI_STATE_OVERWRITING 0x00000200
+#define VPI_STATE_INACTIVE 0x00000400
+#define VPI_STATE_ACTIVE 0x00000800
+#define VPI_STATE_LAUNDRY 0x00001000
+#define VPI_STATE_FREE 0x00002000
+#define VPI_STATE_REFERENCE 0x00004000
+
+#define VPI_STATE_PAGER 0x80000000 /* pager has the page */
+
+typedef struct vm_page_info {
+ vm_offset_t vpi_offset; /* offset in object */
+ vm_offset_t vpi_phys_addr; /* physical address */
+ natural_t vpi_wire_count; /* number of times wired */
+/*vm_prot_t*/natural_t vpi_page_lock; /* XP access restrictions */
+/*vm_prot_t*/natural_t vpi_unlock_request; /* outstanding unlock requests */
+ vm_page_info_state_t vpi_state; /* random state bits */
+} vm_page_info_t;
+
+typedef vm_page_info_t *vm_page_info_array_t;
+
+#endif _MACH_DEBUG_VM_INFO_H_
diff --git a/include/mach_debug/zone_info.h b/include/mach_debug/zone_info.h
new file mode 100644
index 0000000..623bd58
--- /dev/null
+++ b/include/mach_debug/zone_info.h
@@ -0,0 +1,61 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989 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.
+ */
+
+#ifndef _MACH_DEBUG_ZONE_INFO_H_
+#define _MACH_DEBUG_ZONE_INFO_H_
+
+#include <mach/boolean.h>
+#include <mach/machine/vm_types.h>
+
+/*
+ * Remember to update the mig type definitions
+ * in mach_debug_types.defs when adding/removing fields.
+ */
+
+#define ZONE_NAME_MAX_LEN 80
+
+typedef struct zone_name {
+ char zn_name[ZONE_NAME_MAX_LEN];
+} zone_name_t;
+
+typedef zone_name_t *zone_name_array_t;
+
+
+typedef struct zone_info {
+ integer_t zi_count; /* Number of elements used now */
+ vm_size_t zi_cur_size; /* current memory utilization */
+ vm_size_t zi_max_size; /* how large can this zone grow */
+ vm_size_t zi_elem_size; /* size of an element */
+ vm_size_t zi_alloc_size; /* size used for more memory */
+/*boolean_t*/integer_t zi_pageable; /* zone pageable? */
+/*boolean_t*/integer_t zi_sleepable; /* sleep if empty? */
+/*boolean_t*/integer_t zi_exhaustible; /* merely return if empty? */
+/*boolean_t*/integer_t zi_collectable; /* garbage collect elements? */
+} zone_info_t;
+
+typedef zone_info_t *zone_info_array_t;
+
+#endif _MACH_DEBUG_ZONE_INFO_H_