summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2013-08-15 09:37:57 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-08-29 01:52:02 +0200
commit5f536bc5ae7948555af12b105a97aa887fe5da48 (patch)
treed7289cd165c599f2822a02c7af7751a1a854be50
parent07031c67ab7e282e7af943f0774288922142f56c (diff)
hurd: add proc_mark_important
This is based on a fragment of Guillem Jovers patch presented here: http://lists.gnu.org/archive/html/bug-hurd/2006-02/msg00081.html It has been refreshed, updated and the copyright year is adjusted properly. It has been complemented with the necessary features to address the issues the original patch set out to address, namely that killall5 freezes the proc translator before it tries to walk over /proc/*/stat to decide which process to kill. Prior to this patch (and the one marking the procfs server as important process), killall5 would deadlock trying to walk over the proc file system. Ironically it would not have killed any process later on even if it had the chance, since two values obtained from /proc/*/stat are currently hardcoded to zero in our procfs. Patches addressing the problem as a whole are prepared and will be sent as a follow up. * hurd/process.defs (proc_mark_important): New routine definitions. * hurd/process_reply.defs (proc_mark_important_request): Likewise. * hurd/process_request.defs (proc_mark_important_request): Likewise.
-rw-r--r--hurd/process.defs11
-rw-r--r--hurd/process_reply.defs9
-rw-r--r--hurd/process_request.defs12
3 files changed, 29 insertions, 3 deletions
diff --git a/hurd/process.defs b/hurd/process.defs
index c74031a3..b7e1775a 100644
--- a/hurd/process.defs
+++ b/hurd/process.defs
@@ -1,5 +1,5 @@
/* Definitions for process server interface
- Copyright (C) 1992,93,94,95,96,97,2001 Free Software Foundation
+ Copyright (C) 1992,93,94,95,96,97,2001,2013 Free Software Foundation
This file is part of the GNU Hurd.
@@ -374,3 +374,12 @@ routine proc_getnports (
/*** Routines related to early server bootstrapping ***/
skip; /* Reserved for proc_set_init_task */
+
+/* Inform the process server that the process is important. */
+routine proc_mark_important (
+ process: process_t);
+
+/* Query whether the process is important. */
+routine proc_is_important (
+ process: process_t;
+ out essential: boolean_t);
diff --git a/hurd/process_reply.defs b/hurd/process_reply.defs
index bea00648..38f2082e 100644
--- a/hurd/process_reply.defs
+++ b/hurd/process_reply.defs
@@ -1,5 +1,5 @@
/* Reply half of wait
- Copyright (C) 1991,93,94,96,2001 Free Software Foundation, Inc.
+ Copyright (C) 1991,93,94,96,2001,13 Free Software Foundation, Inc.
This file is part of the GNU Hurd.
@@ -178,3 +178,10 @@ simpleroutine proc_getnports (
/*** Routines related to early server bootstrapping ***/
skip; /* Reserved for proc_set_init_task */
+skip; /* proc_mark_important */
+
+simpleroutine proc_is_important (
+ reply_port: reply_port_t;
+ RETURN_CODE_ARG;
+ essential: boolean_t);
+
diff --git a/hurd/process_request.defs b/hurd/process_request.defs
index e36b3679..3ef73536 100644
--- a/hurd/process_request.defs
+++ b/hurd/process_request.defs
@@ -1,6 +1,6 @@
/* Definitions for process server interface (request-only version)
- Copyright (C) 1992, 93, 94, 95, 96, 98 Free Software Foundation, Inc.
+ Copyright (C) 1992, 93, 94, 95, 96, 98, 2013 Free Software Foundation, Inc.
This file is part of the GNU Hurd.
@@ -375,3 +375,13 @@ simpleroutine proc_getnports_request (
/*** Routines related to early server bootstrapping ***/
skip; /* Reserved for proc_set_init_task */
+
+/* Inform the process server that the process is important. */
+simpleroutine proc_mark_important_request (
+ process: process_t;
+ ureplyport reply: reply_port_t);
+
+/* Query whether the process is important. */
+simpleroutine proc_is_important_request (
+ process: process_t;
+ ureplyport reply: reply_port_t);