summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2003-04-25 02:13:42 +0000
committerimp <imp@FreeBSD.org>2003-04-25 02:13:42 +0000
commit71f3be54cc12a1c9e53cbfdca4d66f54cbcf7930 (patch)
tree931f13bb17cb4f7664f40067bbb9602464cc1318 /sbin
parent00ee9049e3e6e5421a2285f65a997acc0c5be7c8 (diff)
downloadFreeBSD-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')
-rw-r--r--sbin/devd/devd.cc6
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);
OpenPOWER on IntegriCloud