summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2001-05-23 19:02:50 +0000
committerphk <phk@FreeBSD.org>2001-05-23 19:02:50 +0000
commitb39746576c7f63926da98dc0ec151b47ff2ca4da (patch)
tree52edabd57b2dccfefda6a4225c5f573935b6ebb6 /sys/kern
parent9af44bee1539aa087d7a213d13ab2ee7dbba1ace (diff)
downloadFreeBSD-src-b39746576c7f63926da98dc0ec151b47ff2ca4da.zip
FreeBSD-src-b39746576c7f63926da98dc0ec151b47ff2ca4da.tar.gz
syslogd gets kernel log messages only once every 30 seconds or
at the top of the minute, whichever comes first. It seems logtimeout() is only called once after the kernel log is opened and then never again after that. So I guess syslogd only gets kernel log messages by virtue of syncer(4)'s flushes ...? PR: 27361 Submitted by: pkern@utcc.utoronto.ca MFC after: 1 week
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/subr_log.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/kern/subr_log.c b/sys/kern/subr_log.c
index cbf1fd7..afcf63f 100644
--- a/sys/kern/subr_log.c
+++ b/sys/kern/subr_log.c
@@ -115,8 +115,8 @@ static int
logclose(dev_t dev, int flag, int mode, struct proc *p)
{
- callout_stop(&logsoftc.sc_callout);
log_open = 0;
+ callout_stop(&logsoftc.sc_callout);
logsoftc.sc_state = 0;
funsetown(logsoftc.sc_sigio);
return (0);
@@ -188,11 +188,14 @@ static void
logtimeout(void *arg)
{
- if (msgbuftrigger == 0)
- return;
- msgbuftrigger = 0;
if (!log_open)
return;
+ if (msgbuftrigger == 0) {
+ callout_reset(&logsoftc.sc_callout,
+ hz / log_wakeups_per_second, logtimeout, NULL);
+ return;
+ }
+ msgbuftrigger = 0;
selwakeup(&logsoftc.sc_selp);
if ((logsoftc.sc_state & LOG_ASYNC) && logsoftc.sc_sigio != NULL)
pgsigio(logsoftc.sc_sigio, SIGIO, 0);
OpenPOWER on IntegriCloud