summaryrefslogtreecommitdiff
path: root/debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-09-03 13:43:49 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-09-03 13:43:49 +0200
commit4be4a53c75860eccd4c1a512618b938da37fe937 (patch)
treeb2da852271300d108cc5924dd57c54da16dc47f9 /debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch
parent5cdc91ae6bfcaeb559f9849a2f2087196b84eb27 (diff)
drop old patch series
Diffstat (limited to 'debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch')
-rw-r--r--debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch327
1 files changed, 0 insertions, 327 deletions
diff --git a/debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch b/debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch
deleted file mode 100644
index 7de211d8..00000000
--- a/debian/patches/0002-Add-proc_set_init_task-make-runsystem-pid-1.patch
+++ /dev/null
@@ -1,327 +0,0 @@
-From 19405120ae3c3897bad0d458df0818e015f017ab Mon Sep 17 00:00:00 2001
-From: Justus Winter <4winter@informatik.uni-hamburg.de>
-Date: Wed, 18 Sep 2013 15:59:31 +0200
-Subject: [PATCH 2/8] Add proc_set_init_task, make runsystem pid 1
-
-* hurd/process.defs (proc_set_init_task): New procedure.
-* hurd/process_reply.defs (proc_set_init_task): Likewise.
-* hurd/process_request.defs (proc_set_init_task): Likewise.
-* include/pids.h: Add HURD_PID_INIT as 1, adjust others accordingly.
-* init/init.c (start_child): Register the child task.
-* proc/proc.h (init_proc): New variable.
-(create_startup_proc): Rename to create_init_proc.
-* proc/main.c (main): Create placeholder proc object for pid 1.
-* proc/mgt.c: Use init_proc instead of startup_proc, as the former is
- the new root of the process tree.
-(create_startup_proc): Rename to create_init_proc.
-(S_proc_set_init_task): New function.
----
- hurd/process.defs | 6 +++-
- hurd/process_reply.defs | 2 +-
- hurd/process_request.defs | 7 ++++-
- include/pids.h | 7 +++--
- init/init.c | 2 +-
- proc/main.c | 9 ++++--
- proc/mgt.c | 76 ++++++++++++++++++++++++++++++++++-------------
- proc/proc.h | 8 +++--
- 8 files changed, 85 insertions(+), 32 deletions(-)
-
-diff --git a/hurd/process.defs b/hurd/process.defs
-index bf90556..498faba 100644
---- a/hurd/process.defs
-+++ b/hurd/process.defs
-@@ -373,7 +373,11 @@ routine proc_getnports (
-
- /*** Routines related to early server bootstrapping ***/
-
--skip; /* Reserved for proc_set_init_task */
-+/* Set the task of process HURD_PID_INIT. Only the startup process
-+ HURD_PID_STARTUP may use this interface. */
-+routine proc_set_init_task (
-+ process: process_t;
-+ task: task_t);
-
- /* Inform the process server that the process is important. */
- routine proc_mark_important (
-diff --git a/hurd/process_reply.defs b/hurd/process_reply.defs
-index ed46d55..80454a6 100644
---- a/hurd/process_reply.defs
-+++ b/hurd/process_reply.defs
-@@ -177,7 +177,7 @@ simpleroutine proc_getnports_reply (
-
- /*** Routines related to early server bootstrapping ***/
-
--skip; /* Reserved for proc_set_init_task */
-+skip; /* proc_set_init_task */
- skip; /* proc_mark_important */
-
- simpleroutine proc_is_important_reply (
-diff --git a/hurd/process_request.defs b/hurd/process_request.defs
-index 38e7146..7565f03 100644
---- a/hurd/process_request.defs
-+++ b/hurd/process_request.defs
-@@ -374,7 +374,12 @@ simpleroutine proc_getnports_request (
-
- /*** Routines related to early server bootstrapping ***/
-
--skip; /* Reserved for proc_set_init_task */
-+/* Set the task of process HURD_PID_INIT. Only the startup process
-+ HURD_PID_STARTUP may use this interface. */
-+simpleroutine proc_set_init_task_request (
-+ process: process_t;
-+ ureplyport reply: reply_port_t;
-+ task: task_t);
-
- /* Inform the process server that the process is important. */
- simpleroutine proc_mark_important_request (
-diff --git a/include/pids.h b/include/pids.h
-index 22415f4..dff7635 100644
---- a/include/pids.h
-+++ b/include/pids.h
-@@ -22,8 +22,9 @@
- #ifndef _HURD_PROCESSES_H
- #define _HURD_PROCESSES_H
-
--#define HURD_PID_STARTUP 1
--#define HURD_PID_KERNEL 2
--#define HURD_PID_PROC 3
-+#define HURD_PID_INIT 1
-+#define HURD_PID_STARTUP 2
-+#define HURD_PID_KERNEL 3
-+#define HURD_PID_PROC 4
-
- #endif /* _HURD_PROCESSES_H */
-diff --git a/init/init.c b/init/init.c
-index b7b40bd..6bc6701 100644
---- a/init/init.c
-+++ b/init/init.c
-@@ -1058,7 +1058,7 @@ start_child (const char *prog, char **progargs)
- NULL, 0, /* OSF Mach */
- #endif
- 0, &child_task);
-- proc_child (procserver, child_task);
-+ proc_set_init_task (procserver, child_task);
- proc_task2pid (procserver, child_task, &child_pid);
- proc_task2proc (procserver, child_task, &default_ports[INIT_PORT_PROC]);
-
-diff --git a/proc/main.c b/proc/main.c
-index 73742ed..f1f4e1b 100644
---- a/proc/main.c
-+++ b/proc/main.c
-@@ -1,5 +1,5 @@
- /* Initialization of the proc server
-- Copyright (C) 1993,94,95,96,97,99,2000,01 Free Software Foundation, Inc.
-+ Copyright (C) 1993,94,95,96,97,99,2000,01,13 Free Software Foundation, Inc.
-
- This file is part of the GNU Hurd.
-
-@@ -88,7 +88,12 @@ main (int argc, char **argv, char **envp)
- generic_port = ports_get_right (genport);
-
- /* Create the initial proc object for init (PID 1). */
-- startup_proc = create_startup_proc ();
-+ init_proc = create_init_proc ();
-+
-+ /* Create the startup proc object for /hurd/init (PID 2). */
-+ startup_proc = allocate_proc (MACH_PORT_NULL);
-+ startup_proc->p_deadmsg = 1;
-+ complete_proc (startup_proc, HURD_PID_STARTUP);
-
- /* Create our own proc object. */
- self_proc = allocate_proc (mach_task_self ());
-diff --git a/proc/mgt.c b/proc/mgt.c
-index b8aa0fc..02d69db 100644
---- a/proc/mgt.c
-+++ b/proc/mgt.c
-@@ -1,5 +1,6 @@
- /* Process management
-- Copyright (C) 1992,93,94,95,96,99,2000,01,02 Free Software Foundation, Inc.
-+ Copyright (C) 1992,93,94,95,96,99,2000,01,02,13
-+ Free Software Foundation, Inc.
-
- This file is part of the GNU Hurd.
-
-@@ -184,7 +185,7 @@ S_proc_child (struct proc *parentp,
- /* Process hierarchy. Remove from our current location
- and place us under our new parent. Sanity check to make sure
- parent is currently init. */
-- assert (childp->p_parent == startup_proc);
-+ assert (childp->p_parent == init_proc);
- if (childp->p_sib)
- childp->p_sib->p_prevsib = childp->p_prevsib;
- *childp->p_prevsib = childp->p_sib;
-@@ -586,7 +587,7 @@ allocate_proc (task_t task)
- /* Allocate and initialize the proc structure for init (PID 1),
- the original parent of all other procs. */
- struct proc *
--create_startup_proc (void)
-+create_init_proc (void)
- {
- static const uid_t zero;
- struct proc *p;
-@@ -595,7 +596,7 @@ create_startup_proc (void)
- p = allocate_proc (MACH_PORT_NULL);
- assert (p);
-
-- p->p_pid = HURD_PID_STARTUP;
-+ p->p_pid = HURD_PID_INIT;
-
- p->p_parent = p;
- p->p_sib = 0;
-@@ -643,7 +644,7 @@ proc_death_notify (struct proc *p)
- }
-
- /* Complete a new process that has been allocated but not entirely initialized.
-- This gets called for every process except startup_proc (PID 1). */
-+ This gets called for every process except init_proc (PID 1). */
- void
- complete_proc (struct proc *p, pid_t pid)
- {
-@@ -662,30 +663,47 @@ complete_proc (struct proc *p, pid_t pid)
-
- p->p_pid = pid;
-
-- ids_ref (&nullids);
-- p->p_id = &nullids;
-+ if (pid == HURD_PID_STARTUP)
-+ {
-+ /* Equip HURD_PID_STARTUP with the same credentials as
-+ HURD_PID_INIT. */
-+ static const uid_t zero;
-+ p->p_id = make_ids (&zero, 1);
-+ assert (p->p_id);
-+ }
-+ else
-+ {
-+ ids_ref (&nullids);
-+ p->p_id = &nullids;
-+ }
-
- p->p_login = nulllogin;
- p->p_login->l_refcnt++;
-
- /* Our parent is init for now. */
-- p->p_parent = startup_proc;
-+ p->p_parent = init_proc;
-
-- p->p_sib = startup_proc->p_ochild;
-- p->p_prevsib = &startup_proc->p_ochild;
-+ p->p_sib = init_proc->p_ochild;
-+ p->p_prevsib = &init_proc->p_ochild;
- if (p->p_sib)
- p->p_sib->p_prevsib = &p->p_sib;
-- startup_proc->p_ochild = p;
-+ init_proc->p_ochild = p;
- p->p_loginleader = 0;
- p->p_ochild = 0;
- p->p_parentset = 0;
-
- p->p_noowner = 1;
-
-- p->p_pgrp = startup_proc->p_pgrp;
-+ p->p_pgrp = init_proc->p_pgrp;
-
-- proc_death_notify (p);
-- add_proc_to_hash (p);
-+ /* At this point, we do not know the task of the startup process,
-+ defer registering death notifications and adding it to the hash
-+ tables. */
-+ if (pid != HURD_PID_STARTUP)
-+ {
-+ proc_death_notify (p);
-+ add_proc_to_hash (p);
-+ }
- join_pgrp (p);
- }
-
-@@ -747,7 +765,7 @@ process_has_exited (struct proc *p)
- nowait_msg_proc_newids (tp->p_msgport, tp->p_task,
- 1, tp->p_pgrp->pg_pgid,
- !tp->p_pgrp->pg_orphcnt);
-- tp->p_parent = startup_proc;
-+ tp->p_parent = init_proc;
- if (tp->p_dead)
- isdead = 1;
- }
-@@ -755,17 +773,17 @@ process_has_exited (struct proc *p)
- nowait_msg_proc_newids (tp->p_msgport, tp->p_task,
- 1, tp->p_pgrp->pg_pgid,
- !tp->p_pgrp->pg_orphcnt);
-- tp->p_parent = startup_proc;
-+ tp->p_parent = init_proc;
-
- /* And now append the lists. */
-- tp->p_sib = startup_proc->p_ochild;
-+ tp->p_sib = init_proc->p_ochild;
- if (tp->p_sib)
- tp->p_sib->p_prevsib = &tp->p_sib;
-- startup_proc->p_ochild = p->p_ochild;
-- p->p_ochild->p_prevsib = &startup_proc->p_ochild;
-+ init_proc->p_ochild = p->p_ochild;
-+ p->p_ochild->p_prevsib = &init_proc->p_ochild;
-
- if (isdead)
-- alert_parent (startup_proc);
-+ alert_parent (init_proc);
- }
-
- /* If an operation is in progress for this process, cause it
-@@ -883,6 +901,24 @@ genpid ()
- return nextpid++;
- }
-
-+/* Implement proc_set_init_task as described in <hurd/process.defs>. */
-+error_t
-+S_proc_set_init_task(struct proc *callerp,
-+ task_t task)
-+{
-+ if (! callerp)
-+ return EOPNOTSUPP;
-+
-+ if (callerp != startup_proc)
-+ return EPERM;
-+
-+ init_proc->p_task = task;
-+ proc_death_notify (init_proc);
-+ add_proc_to_hash (init_proc);
-+
-+ return 0;
-+}
-+
- /* Implement proc_mark_important as described in <hurd/process.defs>. */
- kern_return_t
- S_proc_mark_important (struct proc *p)
-diff --git a/proc/proc.h b/proc/proc.h
-index a2e3c53..6196697 100644
---- a/proc/proc.h
-+++ b/proc/proc.h
-@@ -1,5 +1,6 @@
- /* Process server definitions
-- Copyright (C) 1992,93,94,95,96,99,2000,01 Free Software Foundation, Inc.
-+ Copyright (C) 1992,93,94,95,96,99,2000,01,13
-+ Free Software Foundation, Inc.
-
- This file is part of the GNU Hurd.
-
-@@ -134,7 +135,8 @@ struct exc
-
- mach_port_t authserver;
- struct proc *self_proc; /* process HURD_PID_PROC (us) */
--struct proc *startup_proc; /* process 1 (init) */
-+struct proc *init_proc; /* process 1 (sysvinit) */
-+struct proc *startup_proc; /* process 2 (hurd/init) */
-
- struct port_bucket *proc_bucket;
- struct port_class *proc_class;
-@@ -183,7 +185,7 @@ void exc_clean (void *);
- struct proc *add_tasks (task_t);
- int pidfree (pid_t);
-
--struct proc *create_startup_proc (void);
-+struct proc *create_init_proc (void);
- struct proc *allocate_proc (task_t);
- void proc_death_notify (struct proc *);
- void complete_proc (struct proc *, pid_t);
---
-2.1.0
-