diff options
author | phk <phk@FreeBSD.org> | 2001-05-23 19:02:50 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2001-05-23 19:02:50 +0000 |
commit | b39746576c7f63926da98dc0ec151b47ff2ca4da (patch) | |
tree | 52edabd57b2dccfefda6a4225c5f573935b6ebb6 /sys/kern/subr_log.c | |
parent | 9af44bee1539aa087d7a213d13ab2ee7dbba1ace (diff) | |
download | FreeBSD-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/subr_log.c')
-rw-r--r-- | sys/kern/subr_log.c | 11 |
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); |