Add sysctl 'machdep.msgbuf_clear'. Setting it to anything causes the
kernel message buffer to be cleared. It comes handy in situations when the only logging facility you have is the msgbuf. Reviewed by: jkh
This commit is contained in:
parent
8814fd974a
commit
dede34d355
@ -35,7 +35,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
|
||||
* $Id: machdep.c,v 1.309 1998/09/14 22:43:32 jdp Exp $
|
||||
* $Id: machdep.c,v 1.310 1998/09/25 17:34:48 peter Exp $
|
||||
*/
|
||||
|
||||
#include "apm.h"
|
||||
@ -207,8 +207,8 @@ sysctl_machdep_msgbuf SYSCTL_HANDLER_ARGS
|
||||
{
|
||||
int error;
|
||||
|
||||
/* Unwind the buffer, so that is linear (possibly starting with
|
||||
* some initial nulls.
|
||||
/* Unwind the buffer, so that it's linear (possibly starting with
|
||||
* some initial nulls).
|
||||
*/
|
||||
error=sysctl_handle_opaque(oidp,msgbufp->msg_ptr+msgbufp->msg_bufr,
|
||||
msgbufp->msg_size-msgbufp->msg_bufr,req);
|
||||
@ -221,7 +221,28 @@ sysctl_machdep_msgbuf SYSCTL_HANDLER_ARGS
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_machdep, OID_AUTO, msgbuf, CTLTYPE_STRING|CTLFLAG_RD,
|
||||
0, 0, sysctl_machdep_msgbuf, "A","");
|
||||
0, 0, sysctl_machdep_msgbuf, "A","Contents of kernel message buffer");
|
||||
|
||||
static int msgbuf_clear;
|
||||
|
||||
static int
|
||||
sysctl_machdep_msgbuf_clear SYSCTL_HANDLER_ARGS
|
||||
{
|
||||
int error;
|
||||
error = sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2,
|
||||
req);
|
||||
if (!error && req->newptr) {
|
||||
/* Clear the buffer and reset write pointer */
|
||||
bzero(msgbufp->msg_ptr,msgbufp->msg_size);
|
||||
msgbufp->msg_bufr=msgbufp->msg_bufx=0;
|
||||
msgbuf_clear=0;
|
||||
}
|
||||
return (error);
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_machdep, OID_AUTO, msgbuf_clear, CTLTYPE_INT|CTLFLAG_RW,
|
||||
&msgbuf_clear, 0, sysctl_machdep_msgbuf_clear, "I",
|
||||
"Clear kernel message buffer");
|
||||
|
||||
int bootverbose = 0, Maxmem = 0;
|
||||
long dumplo;
|
||||
|
@ -35,7 +35,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
|
||||
* $Id: machdep.c,v 1.309 1998/09/14 22:43:32 jdp Exp $
|
||||
* $Id: machdep.c,v 1.310 1998/09/25 17:34:48 peter Exp $
|
||||
*/
|
||||
|
||||
#include "apm.h"
|
||||
@ -207,8 +207,8 @@ sysctl_machdep_msgbuf SYSCTL_HANDLER_ARGS
|
||||
{
|
||||
int error;
|
||||
|
||||
/* Unwind the buffer, so that is linear (possibly starting with
|
||||
* some initial nulls.
|
||||
/* Unwind the buffer, so that it's linear (possibly starting with
|
||||
* some initial nulls).
|
||||
*/
|
||||
error=sysctl_handle_opaque(oidp,msgbufp->msg_ptr+msgbufp->msg_bufr,
|
||||
msgbufp->msg_size-msgbufp->msg_bufr,req);
|
||||
@ -221,7 +221,28 @@ sysctl_machdep_msgbuf SYSCTL_HANDLER_ARGS
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_machdep, OID_AUTO, msgbuf, CTLTYPE_STRING|CTLFLAG_RD,
|
||||
0, 0, sysctl_machdep_msgbuf, "A","");
|
||||
0, 0, sysctl_machdep_msgbuf, "A","Contents of kernel message buffer");
|
||||
|
||||
static int msgbuf_clear;
|
||||
|
||||
static int
|
||||
sysctl_machdep_msgbuf_clear SYSCTL_HANDLER_ARGS
|
||||
{
|
||||
int error;
|
||||
error = sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2,
|
||||
req);
|
||||
if (!error && req->newptr) {
|
||||
/* Clear the buffer and reset write pointer */
|
||||
bzero(msgbufp->msg_ptr,msgbufp->msg_size);
|
||||
msgbufp->msg_bufr=msgbufp->msg_bufx=0;
|
||||
msgbuf_clear=0;
|
||||
}
|
||||
return (error);
|
||||
}
|
||||
|
||||
SYSCTL_PROC(_machdep, OID_AUTO, msgbuf_clear, CTLTYPE_INT|CTLFLAG_RW,
|
||||
&msgbuf_clear, 0, sysctl_machdep_msgbuf_clear, "I",
|
||||
"Clear kernel message buffer");
|
||||
|
||||
int bootverbose = 0, Maxmem = 0;
|
||||
long dumplo;
|
||||
|
Loading…
Reference in New Issue
Block a user