bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/2] Fix build


From: Justus Winter
Subject: [PATCH 2/2] Fix build
Date: Fri, 21 Feb 2014 20:52:05 +0100

---
 exec/Makefile                         |   2 +-
 exec/gnumach.defs                     |  74 +++++++++++
 exec/mach_debug/hash_info.h           |  41 ++++++
 exec/mach_debug/ipc_info.h            | 100 +++++++++++++++
 exec/mach_debug/mach_debug.defs       | 233 ++++++++++++++++++++++++++++++++++
 exec/mach_debug/mach_debug_types.defs |  64 ++++++++++
 exec/mach_debug/mach_debug_types.h    |  51 ++++++++
 exec/mach_debug/pc_info.h             |  43 +++++++
 exec/mach_debug/slab_info.h           |  62 +++++++++
 exec/mach_debug/vm_info.h             | 132 +++++++++++++++++++
 10 files changed, 801 insertions(+), 1 deletion(-)
 create mode 100644 exec/gnumach.defs
 create mode 100644 exec/mach_debug/hash_info.h
 create mode 100644 exec/mach_debug/ipc_info.h
 create mode 100644 exec/mach_debug/mach_debug.defs
 create mode 100644 exec/mach_debug/mach_debug_types.defs
 create mode 100644 exec/mach_debug/mach_debug_types.h
 create mode 100644 exec/mach_debug/pc_info.h
 create mode 100644 exec/mach_debug/slab_info.h
 create mode 100644 exec/mach_debug/vm_info.h

diff --git a/exec/Makefile b/exec/Makefile
index 3ef742d..a9ae914 100644
--- a/exec/Makefile
+++ b/exec/Makefile
@@ -22,7 +22,7 @@ makemode := server
 
 SRCS = exec.c main.c hashexec.c hostarch.c
 OBJS = main.o hostarch.o exec.o hashexec.o \
-       execServer.o exec_startupServer.o
+       execServer.o exec_startupServer.o gnumachUser.o
 
 target = exec
 #targets = exec exec.static
diff --git a/exec/gnumach.defs b/exec/gnumach.defs
new file mode 100644
index 0000000..6cfbb0d
--- /dev/null
+++ b/exec/gnumach.defs
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2012 Free Software Foundation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+subsystem
+#if    KERNEL_SERVER
+         KernelServer
+#endif /* KERNEL_SERVER */
+#if    KERNEL_USER
+         KernelUser
+#endif /* KERNEL_USER */
+                      gnumach 4200;
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+#include <mach_debug/mach_debug_types.defs>
+
+type vm_cache_statistics_data_t = struct[11] of integer_t;
+
+/*
+ * Return page cache statistics for the host on which the target task
+ * resides.
+ */
+routine vm_cache_statistics(
+               target_task     : vm_task_t;
+       out     vm_cache_stats  : vm_cache_statistics_data_t);
+
+/*
+ * Terminate a thread and release rights and memory.
+ *
+ * Intended to be used by threading libraries to provide a clean way for
+ * threads to terminate themselves. The resources a thread wouldn't be able
+ * to release without this call when terminating itself are its
+ * last reference to its kernel port, its reply port, and its stack.
+ *
+ * This call is semantically equivalent to :
+ *  - mach_port_deallocate(task, thread_name);
+ *  - if (reply_port != MACH_PORT_NULL)
+ *      mach_port_destroy(task, reply_port);
+ *  - if ((address != 0) || (size != 0))
+ *      vm_deallocate(task, address, size)
+ *  - thread_terminate(thread)
+ *
+ * Implemented as a simple routine so a reply port isn't required.
+ */
+simpleroutine thread_terminate_release(
+               thread          : thread_t;
+               task            : task_t;
+               thread_name     : mach_port_name_t;
+               reply_port      : mach_port_name_t;
+               address         : vm_address_t;
+               size            : vm_size_t);
+
+/*
+ *     Set the name of task TASK to NAME.  This is a debugging aid.
+ *     NAME will be used in error messages printed by the kernel.
+ */
+simpleroutine task_set_name(
+               task    : task_t;
+               name    : kernel_debug_name_t);
diff --git a/exec/mach_debug/hash_info.h b/exec/mach_debug/hash_info.h
new file mode 100644
index 0000000..6944277
--- /dev/null
+++ b/exec/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/exec/mach_debug/ipc_info.h b/exec/mach_debug/ipc_info.h
new file mode 100644
index 0000000..ef0b0c6
--- /dev/null
+++ b/exec/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/exec/mach_debug/mach_debug.defs b/exec/mach_debug/mach_debug.defs
new file mode 100644
index 0000000..053c3fe
--- /dev/null
+++ b/exec/mach_debug/mach_debug.defs
@@ -0,0 +1,233 @@
+/*
+ * 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.
+ */
+
+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 */
+skip;  /* host_zone_info */
+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);
+
+/*
+ *     Returns information about the memory allocation caches.
+ */
+routine host_slab_info(
+               host            : host_t;
+       out     info            : cache_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/exec/mach_debug/mach_debug_types.defs 
b/exec/mach_debug/mach_debug_types.defs
new file mode 100644
index 0000000..d24b6f9
--- /dev/null
+++ b/exec/mach_debug/mach_debug_types.defs
@@ -0,0 +1,64 @@
+/*
+ * 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 cache_info_t = struct[19] of integer_t;
+type cache_info_array_t = array[] of cache_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);
+
+type kernel_debug_name_t = c_string[*: 64];
+
+import <mach_debug/mach_debug_types.h>;
+
+#endif /* _MACH_DEBUG_MACH_DEBUG_TYPES_DEFS_ */
diff --git a/exec/mach_debug/mach_debug_types.h 
b/exec/mach_debug/mach_debug_types.h
new file mode 100644
index 0000000..9c7d1fd
--- /dev/null
+++ b/exec/mach_debug/mach_debug_types.h
@@ -0,0 +1,51 @@
+/*
+ * 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/slab_info.h>
+#include <mach_debug/hash_info.h>
+
+typedef        char    symtab_name_t[32];
+
+/*
+ *     A fixed-length string data type intended for names given to
+ *     kernel objects.
+ *
+ *     Note that it is not guaranteed that the in-kernel data
+ *     structure will hold KERNEL_DEBUG_NAME_MAX bytes.  The given
+ *     name will be truncated to fit into the target data structure.
+ */
+#define KERNEL_DEBUG_NAME_MAX (64)
+typedef char   kernel_debug_name_t[KERNEL_DEBUG_NAME_MAX];
+
+#endif /* _MACH_DEBUG_MACH_DEBUG_TYPES_H_ */
diff --git a/exec/mach_debug/pc_info.h b/exec/mach_debug/pc_info.h
new file mode 100644
index 0000000..bc43fa8
--- /dev/null
+++ b/exec/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/exec/mach_debug/slab_info.h b/exec/mach_debug/slab_info.h
new file mode 100644
index 0000000..37dcb8c
--- /dev/null
+++ b/exec/mach_debug/slab_info.h
@@ -0,0 +1,62 @@
+/*
+ * 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_SLAB_INFO_H_
+#define _MACH_DEBUG_SLAB_INFO_H_
+
+#include <sys/types.h>
+
+/*
+ *     Remember to update the mig type definitions
+ *     in mach_debug_types.defs when adding/removing fields.
+ */
+
+#define CACHE_NAME_MAX_LEN 32
+
+#define CACHE_FLAGS_NO_CPU_POOL                0x01
+#define CACHE_FLAGS_SLAB_EXTERNAL      0x02
+#define CACHE_FLAGS_NO_RECLAIM         0x04
+#define CACHE_FLAGS_VERIFY             0x08
+#define CACHE_FLAGS_DIRECT             0x10
+
+typedef struct cache_info {
+       int flags;
+       size_t cpu_pool_size;
+       size_t obj_size;
+       size_t align;
+       size_t buf_size;
+       size_t slab_size;
+       unsigned long bufs_per_slab;
+       unsigned long nr_objs;
+       unsigned long nr_bufs;
+       unsigned long nr_slabs;
+       unsigned long nr_free_slabs;
+       char name[CACHE_NAME_MAX_LEN];
+} cache_info_t;
+
+typedef cache_info_t *cache_info_array_t;
+
+#endif /* _MACH_DEBUG_SLAB_INFO_H_ */
diff --git a/exec/mach_debug/vm_info.h b/exec/mach_debug/vm_info.h
new file mode 100644
index 0000000..70ba887
--- /dev/null
+++ b/exec/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_ */
-- 
1.8.5.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]