summaryrefslogtreecommitdiff
path: root/debian/patches/tn-0001-kern-provide-notifications-about-new-tasks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/tn-0001-kern-provide-notifications-about-new-tasks.patch')
-rw-r--r--debian/patches/tn-0001-kern-provide-notifications-about-new-tasks.patch187
1 files changed, 0 insertions, 187 deletions
diff --git a/debian/patches/tn-0001-kern-provide-notifications-about-new-tasks.patch b/debian/patches/tn-0001-kern-provide-notifications-about-new-tasks.patch
deleted file mode 100644
index dec19b7..0000000
--- a/debian/patches/tn-0001-kern-provide-notifications-about-new-tasks.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From 19c34e37ddc72850b097fbb46823d108dbb984bb Mon Sep 17 00:00:00 2001
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Date: Tue, 4 Nov 2014 18:46:42 +0100
-Subject: [PATCH gnumach 1/2] kern: provide notifications about new tasks
-
-These notifications are sent to the port registered via
-`register_new_task_notification' and provide a robust parental
-relation between tasks to a userspace server.
-
-* Makefrag.am: Add task_notify.defs.
-* include/mach/gnumach.defs: Add register_new_task_notification.
-* include/mach/task_notify.defs: New file.
-* kern/task.c (new_task_notification): New variable.
-(task_create): Send new task notifications.
-(register_new_task_notification): Add server function.
-* kern/task_notify.cli: New file.
----
- Makefrag.am | 8 ++++++++
- include/mach/gnumach.defs | 8 ++++++++
- include/mach/task_notify.defs | 36 ++++++++++++++++++++++++++++++++++++
- kern/task.c | 33 +++++++++++++++++++++++++++++++++
- kern/task_notify.cli | 7 +++++++
- 5 files changed, 92 insertions(+)
- create mode 100644 include/mach/task_notify.defs
- create mode 100644 kern/task_notify.cli
-
-diff --git a/Makefrag.am b/Makefrag.am
-index 5e98b21..410f56d 100644
---- a/Makefrag.am
-+++ b/Makefrag.am
-@@ -364,6 +364,7 @@ include_mach_HEADERS = \
- include/mach/mach.defs \
- include/mach/mach4.defs \
- include/mach/gnumach.defs \
-+ include/mach/task_notify.defs \
- include/mach/mach_host.defs \
- include/mach/mach_port.defs \
- include/mach/mach_types.defs \
-@@ -488,6 +489,13 @@ nodist_libkernel_a_SOURCES += \
- # device/device_reply.user.defs
- # device/memory_object_reply.user.defs
-
-+nodist_lib_dep_tr_for_defs_a_SOURCES += \
-+ kern/task_notify.user.defs.c
-+nodist_libkernel_a_SOURCES += \
-+ kern/task_notify.user.h \
-+ kern/task_notify.user.c \
-+ kern/task_notify.user.msgids
-+
- # Server stubs.
- nodist_lib_dep_tr_for_defs_a_SOURCES += \
- device/device.server.defs.c \
-diff --git a/include/mach/gnumach.defs b/include/mach/gnumach.defs
-index 6cfbb0d..bac3b09 100644
---- a/include/mach/gnumach.defs
-+++ b/include/mach/gnumach.defs
-@@ -72,3 +72,11 @@ simpleroutine thread_terminate_release(
- simpleroutine task_set_name(
- task : task_t;
- name : kernel_debug_name_t);
-+
-+/*
-+ * Register a port to which a notification about newly created tasks
-+ * are sent.
-+ */
-+routine register_new_task_notification(
-+ host_priv : host_priv_t;
-+ notification : mach_port_send_t);
-diff --git a/include/mach/task_notify.defs b/include/mach/task_notify.defs
-new file mode 100644
-index 0000000..5485d4e
---- /dev/null
-+++ b/include/mach/task_notify.defs
-@@ -0,0 +1,36 @@
-+/*
-+ * Copyright (C) 2014 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, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+subsystem
-+#if KERNEL_SERVER
-+ KernelServer
-+#endif /* KERNEL_SERVER */
-+#if KERNEL_USER
-+ KernelUser
-+#endif /* KERNEL_USER */
-+ task_notify 4400;
-+
-+#include <mach/std_types.defs>
-+#include <mach/mach_types.defs>
-+
-+/* These notifications are sent to the port registered via
-+ `register_new_task_notification' and provide a robust parental
-+ relation between tasks. */
-+simpleroutine mach_notify_new_task(
-+ notify : mach_port_t;
-+ task : task_t;
-+ parent : task_t);
-diff --git a/kern/task.c b/kern/task.c
-index 20acc6a..bcc2a4e 100644
---- a/kern/task.c
-+++ b/kern/task.c
-@@ -50,12 +50,16 @@
- #include <kern/sched_prim.h> /* for thread_wakeup */
- #include <kern/ipc_tt.h>
- #include <kern/syscall_emulation.h>
-+#include <kern/task_notify.user.h>
- #include <vm/vm_kern.h> /* for kernel_map, ipc_kernel_map */
- #include <machine/machspl.h> /* for splsched */
-
- task_t kernel_task = TASK_NULL;
- struct kmem_cache task_cache;
-
-+/* Where to send notifications about newly created tasks. */
-+ipc_port_t new_task_notification = NULL;
-+
- void task_init(void)
- {
- kmem_cache_init(&task_cache, "task", sizeof(struct task), 0,
-@@ -169,6 +173,14 @@ kern_return_t task_create(
-
- snprintf (new_task->name, sizeof new_task->name, "%p", new_task);
-
-+ if (new_task_notification != NULL) {
-+ task_reference (new_task);
-+ task_reference (parent_task);
-+ mach_notify_new_task (new_task_notification,
-+ convert_task_to_port (new_task),
-+ convert_task_to_port (parent_task));
-+ }
-+
- ipc_task_enable(new_task);
-
- *child_task = new_task;
-@@ -1230,3 +1242,24 @@ task_ras_control(
- #endif /* FAST_TAS */
- return ret;
- }
-+
-+/*
-+ * register_new_task_notification
-+ *
-+ * Register a port to which a notification about newly created
-+ * tasks are sent.
-+ */
-+kern_return_t
-+register_new_task_notification(
-+ const host_t host,
-+ ipc_port_t notification)
-+{
-+ if (host == HOST_NULL)
-+ return KERN_INVALID_HOST;
-+
-+ if (new_task_notification != NULL)
-+ return KERN_NO_ACCESS;
-+
-+ new_task_notification = notification;
-+ return KERN_SUCCESS;
-+}
-diff --git a/kern/task_notify.cli b/kern/task_notify.cli
-new file mode 100644
-index 0000000..c6c85d9
---- /dev/null
-+++ b/kern/task_notify.cli
-@@ -0,0 +1,7 @@
-+/* XXX */
-+
-+/* This is a client presentation file. */
-+
-+#define KERNEL_USER 1
-+
-+#include <mach/task_notify.defs>
---
-2.1.1
-