projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MCLALLOC must be called at splimp
[unix-history]
/
usr
/
src
/
sys
/
kern
/
subr_log.c
diff --git
a/usr/src/sys/kern/subr_log.c
b/usr/src/sys/kern/subr_log.c
index
67397bb
..
2f41cca
100644
(file)
--- a/
usr/src/sys/kern/subr_log.c
+++ b/
usr/src/sys/kern/subr_log.c
@@
-1,4
+1,10
@@
-/* subr_log.c 6.4 85/03/18 */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved. The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ * @(#)subr_log.c 7.1 (Berkeley) %G%
+ */
/*
* Error log buffer for kernel printf's.
/*
* Error log buffer for kernel printf's.
@@
-27,24
+33,11
@@
struct logsoftc {
int log_open; /* also used in log() */
int log_open; /* also used in log() */
-#ifdef LOGDEBUG
-/*VARARGS1*/
-xprintf(fmt, x1)
- char *fmt;
- unsigned x1;
-{
-
- prf(fmt, &x1, 1, (struct tty *)0);
-}
-#endif
-
+/*ARGSUSED*/
logopen(dev)
dev_t dev;
{
logopen(dev)
dev_t dev;
{
-#ifdef LOGDEBUG
- xprintf("logopen: dev=0x%x\n", dev);
-#endif
if (log_open)
return (EBUSY);
log_open = 1;
if (log_open)
return (EBUSY);
log_open = 1;
@@
-63,12
+56,10
@@
logopen(dev)
for (i=0; i < MSG_BSIZE; i++)
msgbuf.msg_bufc[i] = 0;
}
for (i=0; i < MSG_BSIZE; i++)
msgbuf.msg_bufc[i] = 0;
}
-#ifdef LOGDEBUG
- xprintf("logopen: bufx=%d, bufr=%d\n", msgbuf.msg_bufx, msgbuf.msg_bufr);
-#endif
return (0);
}
return (0);
}
+/*ARGSUSED*/
logclose(dev, flag)
dev_t dev;
{
logclose(dev, flag)
dev_t dev;
{
@@
-76,25
+67,17
@@
logclose(dev, flag)
logsoftc.sc_state = 0;
logsoftc.sc_selp = 0;
logsoftc.sc_pgrp = 0;
logsoftc.sc_state = 0;
logsoftc.sc_selp = 0;
logsoftc.sc_pgrp = 0;
-#ifdef LOGDEBUG
- xprintf("logclose: dev=0x%x\n", dev);
-#endif
}
}
+/*ARGSUSED*/
logread(dev, uio)
dev_t dev;
struct uio *uio;
{
register long l;
logread(dev, uio)
dev_t dev;
struct uio *uio;
{
register long l;
- register u_int c;
- register struct iovec *iov;
register int s;
int error = 0;
register int s;
int error = 0;
-#ifdef LOGDEBUG
- xprintf("logread: dev=0x%x\n", dev);
-#endif
-
s = splhigh();
while (msgbuf.msg_bufr == msgbuf.msg_bufx) {
if (logsoftc.sc_state & LOG_NBIO) {
s = splhigh();
while (msgbuf.msg_bufr == msgbuf.msg_bufx) {
if (logsoftc.sc_state & LOG_NBIO) {
@@
-111,24
+94,21
@@
logread(dev, uio)
l = msgbuf.msg_bufx - msgbuf.msg_bufr;
if (l < 0)
l = MSG_BSIZE - msgbuf.msg_bufr;
l = msgbuf.msg_bufx - msgbuf.msg_bufr;
if (l < 0)
l = MSG_BSIZE - msgbuf.msg_bufr;
- c = min((u_int) l, (u_int)uio->uio_resid);
-#ifdef LOGDEBUG
- xprintf("logread: bufx=%d, bufr=%d, l=%d, c=%d\n",
- msgbuf.msg_bufx, msgbuf.msg_bufr, l, c);
-#endif
- if (c <= 0)
+ l = MIN(l, uio->uio_resid);
+ if (l == 0)
break;
error = uiomove((caddr_t)&msgbuf.msg_bufc[msgbuf.msg_bufr],
break;
error = uiomove((caddr_t)&msgbuf.msg_bufc[msgbuf.msg_bufr],
- (int)
c
, UIO_READ, uio);
+ (int)
l
, UIO_READ, uio);
if (error)
break;
if (error)
break;
- msgbuf.msg_bufr +=
c
;
+ msgbuf.msg_bufr +=
l
;
if (msgbuf.msg_bufr < 0 || msgbuf.msg_bufr >= MSG_BSIZE)
msgbuf.msg_bufr = 0;
}
return (error);
}
if (msgbuf.msg_bufr < 0 || msgbuf.msg_bufr >= MSG_BSIZE)
msgbuf.msg_bufr = 0;
}
return (error);
}
+/*ARGSUSED*/
logselect(dev, rw)
dev_t dev;
int rw;
logselect(dev, rw)
dev_t dev;
int rw;
@@
-138,26
+118,15
@@
logselect(dev, rw)
switch (rw) {
case FREAD:
switch (rw) {
case FREAD:
- if (msgbuf.msg_bufr != msgbuf.msg_bufx)
- goto win;
-#ifdef LOGDEBUG
- if (logsoftc.sc_selp)
- xprintf("logselect: collision\n");
-#endif
+ if (msgbuf.msg_bufr != msgbuf.msg_bufx) {
+ splx(s);
+ return (1);
+ }
logsoftc.sc_selp = u.u_procp;
break;
logsoftc.sc_selp = u.u_procp;
break;
-
- case FWRITE:
-#ifdef LOGDEBUG
- xprintf("logselect: FWRITE\n");
-#endif
- break;
}
splx(s);
return (0);
}
splx(s);
return (0);
-win:
- splx(s);
- return (1);
}
logwakeup()
}
logwakeup()