diff options
author | Damien Zammit <damien@zamaudio.com> | 2020-08-01 15:05:38 +1000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-08-02 23:33:36 +0200 |
commit | 49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0 (patch) | |
tree | 7d54b9ff7c9fafa3e70960d12f0a98c957a815dd /rumpdisk | |
parent | 304adff10d5bdeeb618a6633e3b80e51aa4585c6 (diff) | |
download | hurd-49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0.tar.gz hurd-49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0.tar.bz2 hurd-49eae3b568ca925e9f0f928f8fb6dd8457d7d0b0.zip |
libmachdev: Introduce startup notification for clean rumpdisk shutdown
Message-Id: <20200801050538.273196-1-damien@zamaudio.com>
Diffstat (limited to 'rumpdisk')
-rw-r--r-- | rumpdisk/block-rump.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/rumpdisk/block-rump.c b/rumpdisk/block-rump.c index 474852cd..e094a199 100644 --- a/rumpdisk/block-rump.c +++ b/rumpdisk/block-rump.c @@ -151,6 +151,19 @@ device_dealloc (void *d) rump_sys_reboot (0, NULL); } +static void +device_shutdown (void) +{ + struct block_data *bd = block_head; + + while (bd) + { + device_close((void *)bd); + bd = bd->next; + } + rump_sys_reboot (0, NULL); +} + static io_return_t device_open (mach_port_t reply_port, mach_msg_type_name_t reply_port_type, dev_mode_t mode, char *name, device_t * devp, @@ -360,7 +373,8 @@ static struct machdev_device_emulation_ops rump_block_emulation_ops = { NULL, NULL, NULL, - NULL + NULL, + device_shutdown }; void |