tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: aprint_* used outside autoconfiguration step
Hello. I'm a little confused by the goal of this change? If there
are are errors worth printing messages about, shouldn't the author of the
error message have a reasonable expectation that their message will get
printed via the available kernel printing facilities? I certainly expect
if I'm writing a kernel module, that if I call a print routine, my message
should turn up rather than being ignored.
-thanks
-Brian
On Feb 19, 10:49am, Christos Zoulas wrote:
} Subject: aprint_* used outside autoconfiguration step
}
} Hi,
}
} I've noticed that now the "autoconfiguration print" error messages
} are printing "autoconfiguration error: " we have a situation where
} aprint_ calls are happening outside the autoconfiguration process.
} This is confusing. What makes this difficult to fix is:
}
} 1. Some of the calls can happen during the autoconfiguration
} phase and also later (during normal operations). For example
} the iffoo_init() routine and its children calls.
} 2. We don't have a non-autoconfig-related family of printf
} calls to handle errors outside autoconfiguration.
}
} I propose to go for the simplest fix for now, which is to only print
} "autoconfiguration error: " during the autoconfiguration process (i.e.
} once autoconfiguration is done, to skip printing it. This again is
} wrong in some cases (hotplug), but something simplistic such as the
} following might take care of the majority of the cases:
}
} Index: subr_prf.c
} ===================================================================
} RCS file: /cvsroot/src/sys/kern/subr_prf.c,v
} retrieving revision 1.176
} diff -u -u -r1.176 subr_prf.c
} --- subr_prf.c 14 Jan 2019 19:21:54 -0000 1.176
} +++ subr_prf.c 19 Feb 2019 15:48:26 -0000
} @@ -105,6 +105,7 @@
} extern struct tty *constty; /* pointer to console "window" tty */
} extern int log_open; /* subr_log: is /dev/klog open? */
} extern krndsource_t rnd_printf_source;
} +extern int config_pending;
} const char *panicstr; /* arg to first call to panic (used as a flag
} to indicate that panic has already been called). */
} struct cpu_info *paniccpu; /* cpu that first paniced */
} @@ -865,7 +866,8 @@
}
} if (prefix)
} kprintf_internal("%s: ", flags, NULL, NULL, prefix);
} - kprintf_internal("autoconfiguration error: ", TOLOG, NULL, NULL);
} + if (config_pending)
} + kprintf_internal("autoconfiguration error: ", TOLOG, NULL, NULL);
} kprintf(fmt, flags, NULL, NULL, ap);
}
} kprintf_unlock();
} Index: subr_autoconf.c
} ===================================================================
} RCS file: /cvsroot/src/sys/kern/subr_autoconf.c,v
} retrieving revision 1.265
} diff -u -u -r1.265 subr_autoconf.c
} --- subr_autoconf.c 1 Dec 2018 02:08:16 -0000 1.265
} +++ subr_autoconf.c 19 Feb 2019 15:48:26 -0000
} @@ -224,7 +224,7 @@
} static int alldevs_nwrite = 0;
} static bool alldevs_garbage = false;
}
} -static int config_pending; /* semaphore for mountroot */
} +int config_pending; /* semaphore for mountroot */
} static kmutex_t config_misc_lock;
} static kcondvar_t config_misc_cv;
}
}
} christos
>-- End of excerpt from Christos Zoulas
Home |
Main Index |
Thread Index |
Old Index