summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_log.c
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2005-04-14 21:58:50 +0000
committerkrw <krw@openbsd.org>2005-04-14 21:58:50 +0000
commitae273ba0e5a750ccc0caab182e667460a278ad0c (patch)
tree88c8a5ceb22b4b694dda1370b8c61a648541332a /sys/kern/subr_log.c
parentclarify (diff)
downloadwireguard-openbsd-ae273ba0e5a750ccc0caab182e667460a278ad0c.tar.xz
wireguard-openbsd-ae273ba0e5a750ccc0caab182e667460a278ad0c.zip
Try to start log message buffer on a new line. Helps install scripts avoid
detecting phantom devices when scanning dmesg output. Suggested by miod@, ok deraadt@.
Diffstat (limited to 'sys/kern/subr_log.c')
-rw-r--r--sys/kern/subr_log.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/sys/kern/subr_log.c b/sys/kern/subr_log.c
index 98eb65c87ca..dbcc9889420 100644
--- a/sys/kern/subr_log.c
+++ b/sys/kern/subr_log.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_log.c,v 1.11 2003/09/23 16:51:12 millert Exp $ */
+/* $OpenBSD: subr_log.c,v 1.12 2005/04/14 21:58:50 krw Exp $ */
/* $NetBSD: subr_log.c,v 1.11 1996/03/30 22:24:44 christos Exp $ */
/*
@@ -77,7 +77,7 @@ initmsgbuf(buf, bufsize)
caddr_t buf;
size_t bufsize;
{
- register struct msgbuf *mbp;
+ struct msgbuf *mbp;
long new_bufs;
/* Sanity-check the given size. */
@@ -100,11 +100,34 @@ initmsgbuf(buf, bufsize)
mbp->msg_magic = MSG_MAGIC;
mbp->msg_bufs = new_bufs;
}
+
+ /* Always start new buffer data on a new line. */
+ if (mbp->msg_bufx > 0 && mbp->msg_bufc[mbp->msg_bufx - 1] != '\n')
+ msgbuf_putchar('\n');
/* mark it as ready for use. */
msgbufmapped = msgbufenabled = 1;
}
+void msgbuf_putchar(const char c)
+{
+ struct msgbuf *mbp = msgbufp;
+
+ if (mbp->msg_magic != MSG_MAGIC)
+ /* Nothing we can do */
+ return;
+
+ mbp->msg_bufc[mbp->msg_bufx++] = c;
+ mbp->msg_bufl = min(mbp->msg_bufl+1, mbp->msg_bufs);
+ if (mbp->msg_bufx < 0 || mbp->msg_bufx >= mbp->msg_bufs)
+ mbp->msg_bufx = 0;
+ /* If the buffer is full, keep the most recent data. */
+ if (mbp->msg_bufr == mbp->msg_bufx) {
+ if (++mbp->msg_bufr >= mbp->msg_bufs)
+ mbp->msg_bufr = 0;
+ }
+}
+
/*ARGSUSED*/
int
logopen(dev, flags, mode, p)
@@ -138,9 +161,9 @@ logread(dev, uio, flag)
struct uio *uio;
int flag;
{
- register struct msgbuf *mbp = msgbufp;
- register long l;
- register int s;
+ struct msgbuf *mbp = msgbufp;
+ long l;
+ int s;
int error = 0;
s = splhigh();