summaryrefslogtreecommitdiff
path: root/debian/patches
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-02-02 17:09:50 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-02-02 17:09:50 +0100
commit84f14bdf0e64640884fb5a5cce59646f98c05eaf (patch)
tree0f039a86a6f24007df9f608731c11271ac04e7a1 /debian/patches
parent6da3e0be8fde0594bd84a13536d9d93048186790 (diff)
add feature-proc-set-task-name-to-pid.patch
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/feature-proc-set-task-name-to-pid.patch919
-rw-r--r--debian/patches/series1
2 files changed, 920 insertions, 0 deletions
diff --git a/debian/patches/feature-proc-set-task-name-to-pid.patch b/debian/patches/feature-proc-set-task-name-to-pid.patch
new file mode 100644
index 00000000..abe40ff0
--- /dev/null
+++ b/debian/patches/feature-proc-set-task-name-to-pid.patch
@@ -0,0 +1,919 @@
+diff --git a/exec/main.c b/exec/main.c
+index c1f347c..27f33b1 100644
+--- a/exec/main.c
++++ b/exec/main.c
+@@ -200,7 +200,7 @@ kern_return_t
+ S_exec_init (struct trivfs_protid *protid,
+ auth_t auth, process_t proc)
+ {
+- mach_port_t host_priv, startup;
++ mach_port_t host_priv, device_master, startup;
+ error_t err;
+
+ if (! protid || ! protid->isroot)
+@@ -232,9 +232,22 @@ S_exec_init (struct trivfs_protid *protid,
+ mach_port_deallocate (mach_task_self (), right);
+ }
+
+- err = get_privileged_ports (&host_priv, NULL);
++ err = get_privileged_ports (&host_priv, &device_master);
+ assert_perror (err);
+
++ {
++ /* Get our stderr set up to print on the console, in case we have
++ to panic or something. */
++ mach_port_t cons;
++ error_t err;
++ err = device_open (device_master, D_READ|D_WRITE, "console", &cons);
++ assert_perror (err);
++ mach_port_deallocate (mach_task_self (), device_master);
++ stdin = mach_open_devstream (cons, "r");
++ stdout = stderr = mach_open_devstream (cons, "w");
++ mach_port_deallocate (mach_task_self (), cons);
++ }
++
+ proc_register_version (procserver, host_priv, "exec", "", HURD_VERSION);
+
+ err = proc_getmsgport (procserver, HURD_PID_STARTUP, &startup);
+diff --git a/proc/Makefile b/proc/Makefile
+index 2eed13c..7f1296a 100644
+--- a/proc/Makefile
++++ b/proc/Makefile
+@@ -29,7 +29,7 @@ MIGSFLAGS="-DPROCESS_INTRAN=pstruct_t reqport_find (process_t)" \
+ "-DPROCESS_IMPORTS=import \"proc.h\";"
+
+ MIGSTUBS = processServer.o notifyServer.o \
+- ourmsgUser.o proc_excUser.o proc_excServer.o
++ ourmsgUser.o proc_excUser.o proc_excServer.o gnumachUser.o
+ OBJS = $(SRCS:.c=.o) $(MIGSTUBS)
+ HURDLIBS = ihash ports shouldbeinlibc
+ OTHERLIBS = -lpthread
+diff --git a/proc/gnumach.defs b/proc/gnumach.defs
+new file mode 100644
+index 0000000..6cfbb0d
+--- /dev/null
++++ b/proc/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/proc/mach_debug/hash_info.h b/proc/mach_debug/hash_info.h
+new file mode 100644
+index 0000000..6944277
+--- /dev/null
++++ b/proc/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/proc/mach_debug/ipc_info.h b/proc/mach_debug/ipc_info.h
+new file mode 100644
+index 0000000..ef0b0c6
+--- /dev/null
++++ b/proc/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/proc/mach_debug/mach_debug.defs b/proc/mach_debug/mach_debug.defs
+new file mode 100644
+index 0000000..053c3fe
+--- /dev/null
++++ b/proc/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/proc/mach_debug/mach_debug_types.defs b/proc/mach_debug/mach_debug_types.defs
+new file mode 100644
+index 0000000..d24b6f9
+--- /dev/null
++++ b/proc/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/proc/mach_debug/mach_debug_types.h b/proc/mach_debug/mach_debug_types.h
+new file mode 100644
+index 0000000..9c7d1fd
+--- /dev/null
++++ b/proc/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/proc/mach_debug/pc_info.h b/proc/mach_debug/pc_info.h
+new file mode 100644
+index 0000000..bc43fa8
+--- /dev/null
++++ b/proc/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/proc/mach_debug/slab_info.h b/proc/mach_debug/slab_info.h
+new file mode 100644
+index 0000000..37dcb8c
+--- /dev/null
++++ b/proc/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/proc/mach_debug/vm_info.h b/proc/mach_debug/vm_info.h
+new file mode 100644
+index 0000000..70ba887
+--- /dev/null
++++ b/proc/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/proc/mgt.c b/proc/mgt.c
+index 5e0accd..61a45a6 100644
+--- a/proc/mgt.c
++++ b/proc/mgt.c
+@@ -663,6 +663,10 @@ complete_proc (struct proc *p, pid_t pid)
+
+ p->p_pid = pid;
+
++ char name[20]; /* prefix + 10 digits + \0 */
++ snprintf (name, sizeof name, "with pid %i", pid);
++ task_set_name (p->p_task, name);
++
+ ids_ref (&nullids);
+ p->p_id = &nullids;
+
diff --git a/debian/patches/series b/debian/patches/series
index 60cdff1f..ecc5d505 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -45,3 +45,4 @@ newRPC.patch
revert-remove-threadvars-hack.patch
xkb-compat.patch
fix-get-children-source.patch
+feature-proc-set-task-name-to-pid.patch