diff options
author | imp <imp@FreeBSD.org> | 2003-04-25 02:13:42 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2003-04-25 02:13:42 +0000 |
commit | 71f3be54cc12a1c9e53cbfdca4d66f54cbcf7930 (patch) | |
tree | 931f13bb17cb4f7664f40067bbb9602464cc1318 /sbin/devd/devd.cc | |
parent | 00ee9049e3e6e5421a2285f65a997acc0c5be7c8 (diff) | |
download | FreeBSD-src-71f3be54cc12a1c9e53cbfdca4d66f54cbcf7930.zip FreeBSD-src-71f3be54cc12a1c9e53cbfdca4d66f54cbcf7930.tar.gz |
Change default to be 'process all events before calling daemon.'
Also, put a small work around into devd to prevent a hang on boot this
would cause because select used to return 2 rather than 0 for no
evetnts due to a bug I fixed a few days ago in subr_bus.c. I'll
remove this workaround May 7th. You have until then to upgrade your
kernel if you want to run a new devd with an older kernel.
Diffstat (limited to 'sbin/devd/devd.cc')
-rw-r--r-- | sbin/devd/devd.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sbin/devd/devd.cc b/sbin/devd/devd.cc index d8bb436..c962f2f 100644 --- a/sbin/devd/devd.cc +++ b/sbin/devd/devd.cc @@ -72,7 +72,7 @@ static const char detach = '-'; int Dflag; int dflag; -int nflag = 1; +int nflag; int romeo_must_die = 0; static void event_loop(void); @@ -696,7 +696,9 @@ event_loop(void) FD_SET(fd, &fds); rv = select(fd + 1, &fds, &fds, &fds, &tv); // No events -> we've processed all pending events - if (rv == 0) { + // == 2 is a kernel bug, but we hang if we don't + // make allowances for a while. + if (rv == 0 || rv == 2) { if (Dflag) fprintf(stderr, "Calling daemon\n"); daemon(0, 0); |