diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-11-06 12:00:31 +0100 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-11-06 12:00:31 +0100 |
commit | 5f7601f47a3fd8957a52c03f1135534fc2232539 (patch) | |
tree | 5c9e59fe396c372923a8dbf07b50e16c19b49a0b | |
parent | 608ea90065a50b7f8e3a5592c8e8e4cbd0265490 (diff) |
random: improve error handling
* random/random.c (arrange_shutdown_notification): Improve error
handling.
(main): Display warning if arranging the shutdown notification failed.
-rw-r--r-- | random/random.c | 22 |
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, |