summaryrefslogtreecommitdiff
path: root/pfinet
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2013-09-19 09:15:02 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-11-21 05:49:03 +0100
commit5ee314b6c1ffd8b090ca6771f0896e080f7000ef (patch)
treef6d20c43e718f887060f9c2c4e6e78fffed26407 /pfinet
parentdcafd2d6cc7a98744b08875b35caf218a4a5c14a (diff)
startup: bind the startup server to /servers/startup
Previously, the Hurd (ab)used the fact that the startup server speaks all protocols on its message port. Any server that wished to register for shutdown notifications would use proc_getmsgport to get a port to the startup server. This hardcodes the PID of /hurd/startup, and does not allow one to point a server to ones own startup server (e.g. using remap). Bind the startup server to /servers/startup instead. Use this to contact the startup server. * exec/main.c (S_exec_init): Use /servers/startup. Fall back to the old method so that the system still boots when the node /servers/startup is missing. * hurd/paths.h (_SERVERS_STARTUP): New macro. * libdiskfs/boot-start.c (diskfs_S_fsys_init): Use /servers/startup. * libdiskfs/init-startup.c (_diskfs_init_completed): Likewise. * pfinet/main.c (arrange_shutdown_notification): Likewise. * startup/Makefile (OBJS): Add fsysServer.o. * startup/startup.c (demuxer): Handle the fsys protocol. (main): Bind to /servers/startup. (S_fsys_getroot): Implement fsys_getroot. Stub out the rest.
Diffstat (limited to 'pfinet')
-rw-r--r--pfinet/main.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/pfinet/main.c b/pfinet/main.c
index d52d9a3a..0f1fbfc7 100644
--- a/pfinet/main.c
+++ b/pfinet/main.c
@@ -24,11 +24,11 @@
#include <arpa/inet.h>
#include <error.h>
#include <argp.h>
+#include <hurd/paths.h>
#include <hurd/startup.h>
#include <string.h>
#include <fcntl.h>
#include <version.h>
-#include <pids.h>
/* Include Hurd's errno.h file, but don't include glue-include/linux/errno.h,
since it #undef's the errno macro. */
@@ -154,7 +154,6 @@ arrange_shutdown_notification ()
{
error_t err;
mach_port_t initport, notify;
- process_t procserver;
struct port_info *pi;
shutdown_notify_class = ports_create_class (0, 0);
@@ -169,13 +168,8 @@ arrange_shutdown_notification ()
if (err)
return;
- procserver = getproc ();
- if (!procserver)
- return;
-
- err = proc_getmsgport (procserver, HURD_PID_STARTUP, &initport);
- mach_port_deallocate (mach_task_self (), procserver);
- if (err)
+ initport = file_name_lookup (_SERVERS_STARTUP, 0, 0);
+ if (initport == MACH_PORT_NULL)
return;
notify = ports_get_send_right (pi);