diff options
Diffstat (limited to 'debian/patches/0011-proc-register-for-new-task-notifications.patch')
| -rw-r--r-- | debian/patches/0011-proc-register-for-new-task-notifications.patch | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/debian/patches/0011-proc-register-for-new-task-notifications.patch b/debian/patches/0011-proc-register-for-new-task-notifications.patch deleted file mode 100644 index 02a7371c..00000000 --- a/debian/patches/0011-proc-register-for-new-task-notifications.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 672950d7b5402ed7d2a35a458b83598a60c7f73a Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Mon, 16 Sep 2013 16:09:05 +0200 -Subject: [PATCH hurd 11/14] proc: register for new task notifications - -* proc/Makefile (MIGSTUBS): Add `gnumachServer.o'. -* proc/main.c (message_demuxer): Handle the `task_notify' protocol. -(main): Register for new task notificatinos. -* proc/mgt.c (S_mach_notify_new_task): Add server function. ---- - proc/Makefile | 4 +++- - proc/main.c | 11 ++++++++++- - proc/mgt.c | 35 ++++++++++++++++++++++++++++++++++- - 3 files changed, 47 insertions(+), 3 deletions(-) - -diff --git a/proc/Makefile b/proc/Makefile -index aa31ffb..2275a66 100644 ---- a/proc/Makefile -+++ b/proc/Makefile -@@ -27,9 +27,11 @@ SRCS = wait.c hash.c host.c info.c main.c mgt.c notify.c pgrp.c msg.c \ - MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h - - MIGSTUBS = processServer.o notifyServer.o \ -- ourmsgUser.o proc_excUser.o proc_excServer.o -+ ourmsgUser.o proc_excUser.o proc_excServer.o \ -+ task_notifyServer.o - OBJS = $(SRCS:.c=.o) $(MIGSTUBS) - HURDLIBS = ihash ports shouldbeinlibc -+ - OTHERLIBS = -lpthread - - include ../Makeconf -diff --git a/proc/main.c b/proc/main.c -index 3419d44..b4288fb 100644 ---- a/proc/main.c -+++ b/proc/main.c -@@ -31,6 +31,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - #include <pids.h> - - #include "proc.h" -+#include "gnumach_U.h" - - const char *argp_program_version = STANDARD_HURD_VERSION (proc); - -@@ -38,6 +39,7 @@ const char *argp_program_version = STANDARD_HURD_VERSION (proc); - #include "notify_S.h" - #include "../libports/interrupt_S.h" - #include "proc_exc_S.h" -+#include "task_notify_S.h" - - int - message_demuxer (mach_msg_header_t *inp, -@@ -47,7 +49,8 @@ message_demuxer (mach_msg_header_t *inp, - if ((routine = process_server_routine (inp)) || - (routine = notify_server_routine (inp)) || - (routine = ports_interrupt_server_routine (inp)) || -- (routine = proc_exc_server_routine (inp))) -+ (routine = proc_exc_server_routine (inp)) || -+ (routine = task_notify_server_routine (inp))) - { - pthread_mutex_lock (&global_lock); - (*routine) (inp, outp); -@@ -152,6 +155,12 @@ main (int argc, char **argv, char **envp) - if (err) - error (0, err, "Increasing priority failed"); - -+ err = register_new_task_notification (_hurd_host_priv, -+ generic_port, -+ MACH_MSG_TYPE_MAKE_SEND); -+ if (err) -+ error (0, err, "Registering task notifications failed"); -+ - { - /* Get our stderr set up to print on the console, in case we have - to panic or something. */ -diff --git a/proc/mgt.c b/proc/mgt.c -index 02d69db..32408ae 100644 ---- a/proc/mgt.c -+++ b/proc/mgt.c -@@ -1,5 +1,5 @@ - /* Process management -- Copyright (C) 1992,93,94,95,96,99,2000,01,02,13 -+ Copyright (C) 1992,93,94,95,96,99,2000,01,02,13,14 - Free Software Foundation, Inc. - - This file is part of the GNU Hurd. -@@ -981,3 +981,36 @@ S_proc_get_code (struct proc *callerp, - - return 0; - } -+ -+/* Handle new task notifications from the kernel. */ -+error_t -+S_mach_notify_new_task (mach_port_t notify, -+ mach_port_t task, -+ mach_port_t parent) -+{ -+ struct proc *parentp, *childp; -+ -+ if (notify != generic_port) -+ return EOPNOTSUPP; -+ -+ parentp = task_find_nocreate (parent); -+ if (! parentp) -+ { -+ mach_port_deallocate (mach_task_self (), task); -+ mach_port_deallocate (mach_task_self (), parent); -+ return ESRCH; -+ } -+ -+ childp = task_find_nocreate (task); -+ if (! childp) -+ { -+ mach_port_mod_refs (mach_task_self (), task, MACH_PORT_RIGHT_SEND, +1); -+ childp = new_proc (task); -+ } -+ -+ /* XXX do something interesting */ -+ -+ mach_port_deallocate (mach_task_self (), task); -+ mach_port_deallocate (mach_task_self (), parent); -+ return 0; -+} --- -2.1.1 - |
