summaryrefslogtreecommitdiff
path: root/random
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-11-06 12:00:31 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-11-06 12:00:31 +0100
commit5f7601f47a3fd8957a52c03f1135534fc2232539 (patch)
tree5c9e59fe396c372923a8dbf07b50e16c19b49a0b /random
parent608ea90065a50b7f8e3a5592c8e8e4cbd0265490 (diff)
random: improve error handling
* random/random.c (arrange_shutdown_notification): Improve error handling. (main): Display warning if arranging the shutdown notification failed.
Diffstat (limited to 'random')
-rw-r--r--random/random.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/random/random.c b/random/random.c
index 9ade1613..f483a5da 100644
--- a/random/random.c
+++ b/random/random.c
@@ -552,7 +552,7 @@ sigterm_handler (int signo)
raise (SIGTERM);
}
-void
+static error_t
arrange_shutdown_notification ()
{
error_t err;
@@ -570,24 +570,26 @@ arrange_shutdown_notification ()
err = ports_create_port (shutdown_notify_class, fsys->pi.bucket,
sizeof (struct port_info), &pi);
if (err)
- return;
+ return err;
procserver = getproc ();
- if (!procserver)
- return;
+ if (! MACH_PORT_VALID (procserver))
+ return EMIG_SERVER_DIED;
err = proc_getmsgport (procserver, 1, &initport);
mach_port_deallocate (mach_task_self (), procserver);
if (err)
- return;
+ return err;
notify = ports_get_send_right (pi);
ports_port_deref (pi);
- startup_request_notification (initport, notify,
- MACH_MSG_TYPE_MAKE_SEND,
- program_invocation_short_name);
+ err = startup_request_notification (initport, notify,
+ MACH_MSG_TYPE_MAKE_SEND,
+ program_invocation_short_name);
+
mach_port_deallocate (mach_task_self (), notify);
mach_port_deallocate (mach_task_self (), initport);
+ return err;
}
@@ -621,7 +623,9 @@ main (int argc, char **argv)
if (err)
error (3, err, "trivfs_startup");
- arrange_shutdown_notification ();
+ err = arrange_shutdown_notification ();
+ if (err)
+ error (0, err, "Cannot request shutdown notification");
/* Launch. */
ports_manage_port_operations_multithread (fsys->pi.bucket, random_demuxer,