diff options
author | grog <grog@FreeBSD.org> | 1999-03-28 08:52:33 +0000 |
---|---|---|
committer | grog <grog@FreeBSD.org> | 1999-03-28 08:52:33 +0000 |
commit | 27e0e9777ffe33d43180b6c6ca92c75ebfe4fcbc (patch) | |
tree | d28e035d53c89199f9e8ad0e6b1037843f73da37 /sys | |
parent | fe2c874b37c495ac8b2df274a7ea54a5d2c10c2b (diff) | |
download | FreeBSD-src-27e0e9777ffe33d43180b6c6ca92c75ebfe4fcbc.zip FreeBSD-src-27e0e9777ffe33d43180b6c6ca92c75ebfe4fcbc.tar.gz |
Remove longjmp declaration.
free_vinum: Put a timeout on waiting for the daemon to die.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/vinum/vinum.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/sys/dev/vinum/vinum.c b/sys/dev/vinum/vinum.c index ac38daf..4f87075 100644 --- a/sys/dev/vinum/vinum.c +++ b/sys/dev/vinum/vinum.c @@ -33,7 +33,7 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: vinum.c,v 1.23 1999/01/15 05:03:15 grog Exp grog $ + * $Id: vinum.c,v 1.24 1999/03/19 05:35:25 grog Exp grog $ */ #define STATIC static /* nothing while we're testing XXX */ @@ -64,12 +64,6 @@ STATIC void vinumattach(void *); STATIC int vinum_modevent(module_t mod, modeventtype_t type, void *unused); #endif -/* Why aren't these declared anywhere? XXX */ -int setjmp(jmp_buf); -void longjmp(jmp_buf, int); - -extern jmp_buf command_fail; /* return here if config fails */ - struct _vinum_conf vinum_conf; /* configuration information */ /* @@ -195,8 +189,11 @@ free_vinum(int cleardrive) } while ((vinum_conf.flags & (VF_STOPPING | VF_DAEMONOPEN)) == (VF_STOPPING | VF_DAEMONOPEN)) { /* at least one daemon open, we're stopping */ - queue_daemon_request(daemonrq_return, (union daemoninfo) NULL); /* stop the daemon */ - tsleep(&vinumclose, PUSER, "vstop", 0); /* and wait for it */ + int timeout = 1; + while (timeout) { /* until the daemon sees sense */ + queue_daemon_request(daemonrq_return, (union daemoninfo) NULL); /* stop the daemon */ + timeout = tsleep(&vinumclose, PUSER, "vstop", 1); /* and wait for it */ + } } if (SD != NULL) Free(SD); |