diff options
Diffstat (limited to 'debian/patches')
-rw-r--r-- | debian/patches/feature-proc-set-task-name-to-pid.patch | 919 | ||||
-rw-r--r-- | debian/patches/series | 1 |
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 |