Clean up deleted files.
This commit is contained in:
parent
db906e7d79
commit
a2d6c76c41
@ -1,14 +0,0 @@
|
||||
# from: @(#)Makefile 5.2 (Berkeley) 4/27/91
|
||||
# $Id: Makefile,v 1.6 1994/01/07 12:35:30 deraadt Exp $
|
||||
|
||||
PROG= kdump
|
||||
CFLAGS+=-I${.CURDIR}/../../../sys -I${.CURDIR}/../ktrace
|
||||
SRCS= kdump.c ioctl.c subr.c
|
||||
.PATH: ${.CURDIR}/../ktrace
|
||||
CLEANFILES+=ioctl.c
|
||||
|
||||
ioctl.c: mkioctls
|
||||
/bin/sh ${.CURDIR}/mkioctls > ioctl.c
|
||||
|
||||
.include "../../Makefile.inc"
|
||||
.include <bsd.prog.mk>
|
@ -1,101 +0,0 @@
|
||||
.\" Copyright (c) 1990 The Regents of the University of California.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" from: @(#)kdump.1 5.4 (Berkeley) 7/26/91
|
||||
.\" $Id: kdump.1,v 1.2 1993/08/01 07:31:57 mycroft Exp $
|
||||
.\"
|
||||
.Dd July 26, 1991
|
||||
.Dt KDUMP 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm kdump
|
||||
.Nd display kernel trace data
|
||||
.Sh SYNOPSIS
|
||||
.Nm kdump
|
||||
.Op Fl dnlRT
|
||||
.Op Fl f Ar file
|
||||
.Op Fl m Ar maxdata
|
||||
.Op Fl t Op cnis
|
||||
.Sh DESCRIPTION
|
||||
.Nm Kdump
|
||||
displays the kernel trace files produced with
|
||||
.Xr ktrace 1
|
||||
in human readable format.
|
||||
By default, the file
|
||||
.Pa ktrace.out
|
||||
in the current directory is displayed.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width Fl
|
||||
.It Fl d
|
||||
Display all numbers in decimal.
|
||||
.It Fl f Ar file
|
||||
Display the specified file instead of
|
||||
.Pa ktrace.out .
|
||||
.It Fl l
|
||||
Loop reading the trace file, once the end-of-file is reached, waiting for
|
||||
more data.
|
||||
.It Fl m Ar maxdata
|
||||
Display at most
|
||||
.Ar maxdata
|
||||
bytes when decoding
|
||||
.Tn I/O .
|
||||
.It Fl n
|
||||
Suppress ad hoc translations.
|
||||
Normally
|
||||
.Nm kdump
|
||||
tries to decode many system calls into a more human readable format.
|
||||
For example,
|
||||
.Xr ioctl 2
|
||||
values are replaced with the macro name and
|
||||
.Va errno
|
||||
values are replaced with the
|
||||
.Xr strerror 3
|
||||
string.
|
||||
Suppressing this feature yields a more consistent output format and is
|
||||
easily amenable to further processing.
|
||||
.It Fl R
|
||||
Display relative timestamps (time since previous entry).
|
||||
.It Fl T
|
||||
Display absolute timestamps for each entry (seconds since epoch).
|
||||
.It Fl t Ar cnis
|
||||
See the
|
||||
.Fl t
|
||||
option of
|
||||
.Xr ktrace 1 .
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr ktrace 1
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm kdump
|
||||
command is
|
||||
.Ud .
|
@ -1,426 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
char copyright[] =
|
||||
"@(#) Copyright (c) 1988 The Regents of the University of California.\n\
|
||||
All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)kdump.c 5.3 (Berkeley) 1/17/91";*/
|
||||
static char rcsid[] = "$Id: kdump.c,v 1.6 1994/02/02 19:52:46 pk Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/ktrace.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/ptrace.h>
|
||||
#undef _SYS_ERRNO_H_
|
||||
#define KERNEL
|
||||
#include <sys/errno.h>
|
||||
#undef KERNEL
|
||||
#include <vis.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ktrace.h"
|
||||
|
||||
int timestamp, decimal, fancy = 1, tail, maxdata;
|
||||
char *tracefile = DEF_TRACEFILE;
|
||||
struct ktr_header ktr_header;
|
||||
|
||||
#define eqs(s1, s2) (strcmp((s1), (s2)) == 0)
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
extern int optind;
|
||||
extern char *optarg;
|
||||
int ch, ktrlen, size;
|
||||
register void *m;
|
||||
int trpoints = ALL_POINTS;
|
||||
|
||||
while ((ch = getopt(argc,argv,"f:dlm:nRTt:")) != EOF)
|
||||
switch((char)ch) {
|
||||
case 'f':
|
||||
tracefile = optarg;
|
||||
break;
|
||||
case 'd':
|
||||
decimal = 1;
|
||||
break;
|
||||
case 'l':
|
||||
tail = 1;
|
||||
break;
|
||||
case 'm':
|
||||
maxdata = atoi(optarg);
|
||||
break;
|
||||
case 'n':
|
||||
fancy = 0;
|
||||
break;
|
||||
case 'R':
|
||||
timestamp = 2; /* relative timestamp */
|
||||
break;
|
||||
case 'T':
|
||||
timestamp = 1;
|
||||
break;
|
||||
case 't':
|
||||
trpoints = getpoints(optarg);
|
||||
if (trpoints < 0) {
|
||||
(void)fprintf(stderr,
|
||||
"kdump: unknown trace point in %s\n",
|
||||
optarg);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
argv += optind;
|
||||
argc -= optind;
|
||||
|
||||
if (argc > 1)
|
||||
usage();
|
||||
|
||||
m = (void *)malloc(size = 1025);
|
||||
if (m == NULL) {
|
||||
(void)fprintf(stderr, "kdump: %s.\n", strerror(ENOMEM));
|
||||
exit(1);
|
||||
}
|
||||
if (!freopen(tracefile, "r", stdin)) {
|
||||
(void)fprintf(stderr,
|
||||
"kdump: %s: %s.\n", tracefile, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
while (fread_tail(&ktr_header, sizeof(struct ktr_header), 1)) {
|
||||
if (trpoints & (1<<ktr_header.ktr_type))
|
||||
dumpheader(&ktr_header);
|
||||
if ((ktrlen = ktr_header.ktr_len) < 0) {
|
||||
(void)fprintf(stderr,
|
||||
"kdump: bogus length 0x%x\n", ktrlen);
|
||||
exit(1);
|
||||
}
|
||||
if (ktrlen > size) {
|
||||
m = (void *)realloc(m, ktrlen+1);
|
||||
if (m == NULL) {
|
||||
(void)fprintf(stderr,
|
||||
"kdump: %s.\n", strerror(ENOMEM));
|
||||
exit(1);
|
||||
}
|
||||
size = ktrlen;
|
||||
}
|
||||
if (ktrlen && fread_tail(m, ktrlen, 1) == 0) {
|
||||
(void)fprintf(stderr, "kdump: data too short.\n");
|
||||
exit(1);
|
||||
}
|
||||
if ((trpoints & (1<<ktr_header.ktr_type)) == 0)
|
||||
continue;
|
||||
switch (ktr_header.ktr_type) {
|
||||
case KTR_SYSCALL:
|
||||
ktrsyscall((struct ktr_syscall *)m);
|
||||
break;
|
||||
case KTR_SYSRET:
|
||||
ktrsysret((struct ktr_sysret *)m);
|
||||
break;
|
||||
case KTR_NAMEI:
|
||||
ktrnamei(m, ktrlen);
|
||||
break;
|
||||
case KTR_GENIO:
|
||||
ktrgenio((struct ktr_genio *)m, ktrlen);
|
||||
break;
|
||||
case KTR_PSIG:
|
||||
ktrpsig((struct ktr_psig *)m);
|
||||
break;
|
||||
}
|
||||
if (tail)
|
||||
(void)fflush(stdout);
|
||||
}
|
||||
}
|
||||
|
||||
fread_tail(buf, size, num)
|
||||
char *buf;
|
||||
int num, size;
|
||||
{
|
||||
int i;
|
||||
|
||||
while ((i = fread(buf, size, num, stdin)) == 0 && tail) {
|
||||
(void)sleep(1);
|
||||
clearerr(stdin);
|
||||
}
|
||||
return (i);
|
||||
}
|
||||
|
||||
dumpheader(kth)
|
||||
struct ktr_header *kth;
|
||||
{
|
||||
static char unknown[64];
|
||||
static struct timeval prevtime, temp;
|
||||
char *type;
|
||||
|
||||
switch (kth->ktr_type) {
|
||||
case KTR_SYSCALL:
|
||||
type = "CALL";
|
||||
break;
|
||||
case KTR_SYSRET:
|
||||
type = "RET ";
|
||||
break;
|
||||
case KTR_NAMEI:
|
||||
type = "NAMI";
|
||||
break;
|
||||
case KTR_GENIO:
|
||||
type = "GIO ";
|
||||
break;
|
||||
case KTR_PSIG:
|
||||
type = "PSIG";
|
||||
break;
|
||||
default:
|
||||
(void)sprintf(unknown, "UNKNOWN(%d)", kth->ktr_type);
|
||||
type = unknown;
|
||||
}
|
||||
|
||||
(void)printf("%6d %-8s ", kth->ktr_pid, kth->ktr_comm);
|
||||
if (timestamp) {
|
||||
if (timestamp == 2) {
|
||||
temp = kth->ktr_time;
|
||||
timevalsub(&kth->ktr_time, &prevtime);
|
||||
prevtime = temp;
|
||||
}
|
||||
(void)printf("%ld.%06ld ",
|
||||
kth->ktr_time.tv_sec, kth->ktr_time.tv_usec);
|
||||
}
|
||||
(void)printf("%s ", type);
|
||||
}
|
||||
|
||||
#include <sys/syscall.h>
|
||||
#define KTRACE
|
||||
#include "kern/syscalls.c"
|
||||
#undef KTRACE
|
||||
int nsyscalls = sizeof (syscallnames) / sizeof (syscallnames[0]);
|
||||
|
||||
static char *ptrace_ops[] = {
|
||||
"PT_TRACE_ME", "PT_READ_I", "PT_READ_D", "PT_READ_U",
|
||||
"PT_WRITE_I", "PT_WRITE_D", "PT_WRITE_U", "PT_CONTINUE",
|
||||
"PT_KILL", "PT_ATTACH", "PT_DETACH",
|
||||
};
|
||||
|
||||
ktrsyscall(ktr)
|
||||
register struct ktr_syscall *ktr;
|
||||
{
|
||||
register narg = ktr->ktr_narg;
|
||||
register int *ip;
|
||||
char *ioctlname();
|
||||
|
||||
if (ktr->ktr_code >= nsyscalls || ktr->ktr_code < 0)
|
||||
(void)printf("[%d]", ktr->ktr_code);
|
||||
else
|
||||
(void)printf("%s", syscallnames[ktr->ktr_code]);
|
||||
ip = (int *)((char *)ktr + sizeof(struct ktr_syscall));
|
||||
if (narg) {
|
||||
char c = '(';
|
||||
if (fancy) {
|
||||
if (ktr->ktr_code == SYS_ioctl) {
|
||||
char *cp;
|
||||
if (decimal)
|
||||
(void)printf("(%d", *ip);
|
||||
else
|
||||
(void)printf("(%#x", *ip);
|
||||
ip++;
|
||||
narg--;
|
||||
if ((cp = ioctlname(*ip)) != NULL)
|
||||
(void)printf(",%s", cp);
|
||||
else {
|
||||
if (decimal)
|
||||
(void)printf(",%d", *ip);
|
||||
else
|
||||
(void)printf(",%#x ", *ip);
|
||||
}
|
||||
c = ',';
|
||||
ip++;
|
||||
narg--;
|
||||
} else if (ktr->ktr_code == SYS_ptrace) {
|
||||
if (*ip <= PT_DETACH && *ip >= 0)
|
||||
(void)printf("(%s", ptrace_ops[*ip]);
|
||||
else
|
||||
(void)printf("(%d", *ip);
|
||||
c = ',';
|
||||
ip++;
|
||||
narg--;
|
||||
}
|
||||
}
|
||||
while (narg) {
|
||||
if (decimal)
|
||||
(void)printf("%c%d", c, *ip);
|
||||
else
|
||||
(void)printf("%c%#x", c, *ip);
|
||||
c = ',';
|
||||
ip++;
|
||||
narg--;
|
||||
}
|
||||
(void)putchar(')');
|
||||
}
|
||||
(void)putchar('\n');
|
||||
}
|
||||
|
||||
ktrsysret(ktr)
|
||||
struct ktr_sysret *ktr;
|
||||
{
|
||||
register int ret = ktr->ktr_retval;
|
||||
register int error = ktr->ktr_error;
|
||||
register int code = ktr->ktr_code;
|
||||
|
||||
if (code >= nsyscalls || code < 0)
|
||||
(void)printf("[%d] ", code);
|
||||
else
|
||||
(void)printf("%s ", syscallnames[code]);
|
||||
|
||||
if (error == 0) {
|
||||
if (fancy) {
|
||||
(void)printf("%d", ret);
|
||||
if (ret < 0 || ret > 9)
|
||||
(void)printf("/%#x", ret);
|
||||
} else {
|
||||
if (decimal)
|
||||
(void)printf("%d", ret);
|
||||
else
|
||||
(void)printf("%#x", ret);
|
||||
}
|
||||
} else if (error == ERESTART)
|
||||
(void)printf("RESTART");
|
||||
else if (error == EJUSTRETURN)
|
||||
(void)printf("JUSTRETURN");
|
||||
else {
|
||||
(void)printf("-1 errno %d", ktr->ktr_error);
|
||||
if (fancy)
|
||||
(void)printf(" %s", strerror(ktr->ktr_error));
|
||||
}
|
||||
(void)putchar('\n');
|
||||
}
|
||||
|
||||
ktrnamei(cp, len)
|
||||
char *cp;
|
||||
{
|
||||
(void)printf("\"%.*s\"\n", len, cp);
|
||||
}
|
||||
|
||||
ktrgenio(ktr, len)
|
||||
struct ktr_genio *ktr;
|
||||
{
|
||||
register int datalen = len - sizeof (struct ktr_genio);
|
||||
register char *dp = (char *)ktr + sizeof (struct ktr_genio);
|
||||
register char *cp;
|
||||
register int col = 0;
|
||||
register width;
|
||||
char visbuf[5];
|
||||
static screenwidth = 0;
|
||||
|
||||
if (screenwidth == 0) {
|
||||
struct winsize ws;
|
||||
|
||||
if (fancy && ioctl(fileno(stderr), TIOCGWINSZ, &ws) != -1 &&
|
||||
ws.ws_col > 8)
|
||||
screenwidth = ws.ws_col;
|
||||
else
|
||||
screenwidth = 80;
|
||||
}
|
||||
printf("fd %d %s %d bytes\n", ktr->ktr_fd,
|
||||
ktr->ktr_rw == UIO_READ ? "read" : "wrote", datalen);
|
||||
if (maxdata && datalen > maxdata)
|
||||
datalen = maxdata;
|
||||
(void)printf(" \"");
|
||||
col = 8;
|
||||
for (;datalen > 0; datalen--, dp++) {
|
||||
(void) vis(visbuf, *dp, VIS_CSTYLE, *(dp+1));
|
||||
cp = visbuf;
|
||||
/*
|
||||
* Keep track of printables and
|
||||
* space chars (like fold(1)).
|
||||
*/
|
||||
if (col == 0) {
|
||||
(void)putchar('\t');
|
||||
col = 8;
|
||||
}
|
||||
switch(*cp) {
|
||||
case '\n':
|
||||
col = 0;
|
||||
(void)putchar('\n');
|
||||
continue;
|
||||
case '\t':
|
||||
width = 8 - (col&07);
|
||||
break;
|
||||
default:
|
||||
width = strlen(cp);
|
||||
}
|
||||
if (col + width > (screenwidth-2)) {
|
||||
(void)printf("\\\n\t");
|
||||
col = 8;
|
||||
}
|
||||
col += width;
|
||||
do {
|
||||
(void)putchar(*cp++);
|
||||
} while (*cp);
|
||||
}
|
||||
if (col == 0)
|
||||
(void)printf(" ");
|
||||
(void)printf("\"\n");
|
||||
}
|
||||
|
||||
char *signames[] = {
|
||||
"NULL", "HUP", "INT", "QUIT", "ILL", "TRAP", "IOT", /* 1 - 6 */
|
||||
"EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", /* 7 - 12 */
|
||||
"PIPE", "ALRM", "TERM", "URG", "STOP", "TSTP", /* 13 - 18 */
|
||||
"CONT", "CHLD", "TTIN", "TTOU", "IO", "XCPU", /* 19 - 24 */
|
||||
"XFSZ", "VTALRM", "PROF", "WINCH", "29", "USR1", /* 25 - 30 */
|
||||
"USR2", NULL, /* 31 - 32 */
|
||||
};
|
||||
|
||||
ktrpsig(psig)
|
||||
struct ktr_psig *psig;
|
||||
{
|
||||
(void)printf("SIG%s ", signames[psig->signo]);
|
||||
if (psig->action == SIG_DFL)
|
||||
(void)printf("SIG_DFL\n");
|
||||
else
|
||||
(void)printf("caught handler=0x%x mask=0x%x code=0x%x\n",
|
||||
(u_int)psig->action, psig->mask, psig->code);
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
(void)fprintf(stderr,
|
||||
"usage: kdump [-dnlRT] [-f trfile] [-m maxdata] [-t [cnis]]\n");
|
||||
exit(1);
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
awk '
|
||||
BEGIN {
|
||||
print "#include <sys/param.h>"
|
||||
print "#include <sys/socket.h>"
|
||||
print "#include <sys/socketvar.h>"
|
||||
print "#include <net/route.h>"
|
||||
print "#include <net/if.h>"
|
||||
print "#include <sys/termios.h>"
|
||||
print "#include <net/bpf.h>"
|
||||
print "#define COMPAT_43"
|
||||
print "#include <sys/ioctl.h>"
|
||||
print ""
|
||||
print "char *"
|
||||
print "ioctlname(val)"
|
||||
print "{"
|
||||
print ""
|
||||
}
|
||||
|
||||
/^#[ ]*define[ ]*(BIO|TIO|FIO|SIO|OSIO)[A-Z]*[ ]*_IO/ {
|
||||
|
||||
# find where the name starts
|
||||
for (i = 1; i <= NF; i++)
|
||||
if ($i ~ /define/)
|
||||
break;
|
||||
++i;
|
||||
#
|
||||
printf("\tif (val == %s)\n\t\treturn(\"%s\");\n", $i, $i);
|
||||
|
||||
}
|
||||
END {
|
||||
print "\n\treturn(NULL);"
|
||||
print "}"
|
||||
}
|
||||
' /usr/include/sys/ioctl.h /usr/include/sys/ioctl_compat.h /usr/include/net/bpf.h
|
@ -1,8 +0,0 @@
|
||||
# from: @(#)Makefile 5.3 (Berkeley) 4/27/91
|
||||
# $Id: Makefile,v 1.2 1993/07/31 15:21:28 mycroft Exp $
|
||||
|
||||
PROG= ktrace
|
||||
SRCS= ktrace.c subr.c
|
||||
|
||||
.include "../../Makefile.inc"
|
||||
.include <bsd.prog.mk>
|
@ -1,164 +0,0 @@
|
||||
.\" Copyright (c) 1990 The Regents of the University of California.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" from: @(#)ktrace.1 5.5 (Berkeley) 7/26/91
|
||||
.\" $Id: ktrace.1,v 1.3 1994/01/07 14:46:15 mycroft Exp $
|
||||
.\"
|
||||
.Dd July 26, 1991
|
||||
.Dt KTRACE 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ktrace
|
||||
.Nd enable kernel process tracing
|
||||
.Sh SYNOPSIS
|
||||
.Nm ktrace
|
||||
.Op Fl aCcdi
|
||||
.Op Fl f Ar trfile
|
||||
.Op Fl g Ar pgrp
|
||||
.Op Fl p Ar pid
|
||||
.Op Fl t Ar trstr
|
||||
.Nm ktrace
|
||||
.Op Fl adi
|
||||
.Op Fl f Ar trfile
|
||||
.Op Fl t Ar trstr
|
||||
command
|
||||
.Sh DESCRIPTION
|
||||
.Nm Ktrace
|
||||
enables kernel trace logging for the specified processes.
|
||||
Kernel trace data is logged to the file
|
||||
.Pa ktrace.out .
|
||||
The kernel operations that are traced include system calls, namei
|
||||
translations, signal processing, and
|
||||
.Tn I/O .
|
||||
.Pp
|
||||
Once tracing is enabled on a process, trace data will be logged until
|
||||
either the process exits or the trace point is cleared.
|
||||
A traced process can generate enormous amounts of log data quickly;
|
||||
It is strongly suggested that users memorize how to disable tracing before
|
||||
attempting to trace a process.
|
||||
The following command is sufficient to disable tracing on all user owned
|
||||
processes, and, if executed by root, all processes:
|
||||
.Pp
|
||||
.Dl \&$ ktrace -C
|
||||
.Pp
|
||||
The trace file is not human readable; use
|
||||
.Xr kdump 1
|
||||
to decode it.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl a
|
||||
Append to the trace file instead of truncating it.
|
||||
.It Fl C
|
||||
Disable tracing on all user owned processes, and, if executed by root, all
|
||||
processes in the system.
|
||||
.It Fl c
|
||||
Clear the trace points associated with the specified file or processes.
|
||||
.It Fl d
|
||||
Descendants; perform the operation for all current children of the
|
||||
designated processes.
|
||||
.It Fl f Ar file
|
||||
Log trace records to
|
||||
.Ar file
|
||||
instead of
|
||||
.Pa ktrace.out .
|
||||
.It Fl g Ar pgid
|
||||
Enable (disable) tracing on all processes in the process group (only one
|
||||
.Fl g
|
||||
flag is permitted).
|
||||
.It Fl i
|
||||
Inherit; pass the trace flags to all future children of the designated
|
||||
processes.
|
||||
.It Fl p Ar pid
|
||||
Enable (disable) tracing on the indicated process id (only one
|
||||
.Fl p
|
||||
flag is permitted).
|
||||
.It Fl t Ar trstr
|
||||
The string argument represents the kernel trace points, one per letter.
|
||||
The following table equates the letters with the tracepoints:
|
||||
.Pp
|
||||
.Bl -tag -width flag -compact
|
||||
.It Cm c
|
||||
trace system calls
|
||||
.It Cm n
|
||||
trace namei translations
|
||||
.It Cm i
|
||||
trace
|
||||
.Tn I/O
|
||||
.It Cm s
|
||||
trace signal processing
|
||||
.El
|
||||
.It Ar command
|
||||
Execute
|
||||
.Ar command
|
||||
with the specified trace flags.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Fl p ,
|
||||
.Fl g ,
|
||||
and
|
||||
.Ar command
|
||||
options are mutually exclusive.
|
||||
.Sh EXAMPLES
|
||||
# trace all kernel operations of process id 34
|
||||
.Dl $ ktrace -p 34
|
||||
.Pp
|
||||
# trace all kernel operations of processes in process group 15 and
|
||||
# pass the trace flags to all current and future children
|
||||
.Dl $ ktrace -idg 15
|
||||
.Pp
|
||||
# disable all tracing of process 65
|
||||
.Dl $ ktrace -cp 65
|
||||
.Pp
|
||||
# disable tracing signals on process 70 and all current children
|
||||
.Dl $ ktrace -t s -cdp 70
|
||||
.Pp
|
||||
# enable tracing of
|
||||
.Tn I/O
|
||||
on process 67
|
||||
.Dl $ ktrace -ti -p 67
|
||||
.Pp
|
||||
# run the command "w", tracing only system calls
|
||||
.Dl $ ktrace -tc w
|
||||
.Pp
|
||||
# disable all tracing to the file "tracedata"
|
||||
.Dl $ ktrace -c -f tracedata
|
||||
.Pp
|
||||
# disable tracing of all processes owned by the user
|
||||
.Dl $ ktrace -C
|
||||
.Sh SEE ALSO
|
||||
.Xr kdump 1
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm ktrace
|
||||
command is
|
||||
.Ud .
|
@ -1,185 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
char copyright[] =
|
||||
"@(#) Copyright (c) 1988 The Regents of the University of California.\n\
|
||||
All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)ktrace.c 5.2 (Berkeley) 3/5/91";*/
|
||||
static char rcsid[] = "$Id: ktrace.c,v 1.3 1993/08/01 18:14:14 mycroft Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/errno.h>
|
||||
#include <sys/uio.h>
|
||||
#include <sys/ktrace.h>
|
||||
#include <stdio.h>
|
||||
#include "ktrace.h"
|
||||
|
||||
void no_ktrace();
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
extern int optind;
|
||||
extern char *optarg;
|
||||
enum { NOTSET, CLEAR, CLEARALL } clear;
|
||||
int append, ch, fd, inherit, ops, pid, pidset, trpoints;
|
||||
char *tracefile;
|
||||
|
||||
clear = NOTSET;
|
||||
append = ops = pidset = 0;
|
||||
trpoints = ALL_POINTS;
|
||||
tracefile = DEF_TRACEFILE;
|
||||
while ((ch = getopt(argc,argv,"aCcdf:g:ip:t:")) != EOF)
|
||||
switch((char)ch) {
|
||||
case 'a':
|
||||
append = 1;
|
||||
break;
|
||||
case 'C':
|
||||
clear = CLEARALL;
|
||||
pidset = 1;
|
||||
break;
|
||||
case 'c':
|
||||
clear = CLEAR;
|
||||
break;
|
||||
case 'd':
|
||||
ops |= KTRFLAG_DESCEND;
|
||||
break;
|
||||
case 'f':
|
||||
tracefile = optarg;
|
||||
break;
|
||||
case 'g':
|
||||
pid = -rpid(optarg);
|
||||
pidset = 1;
|
||||
break;
|
||||
case 'i':
|
||||
inherit = 1;
|
||||
break;
|
||||
case 'p':
|
||||
pid = rpid(optarg);
|
||||
pidset = 1;
|
||||
break;
|
||||
case 't':
|
||||
trpoints = getpoints(optarg);
|
||||
if (trpoints < 0) {
|
||||
(void)fprintf(stderr,
|
||||
"ktrace: unknown facility in %s\n", optarg);
|
||||
usage();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
argv += optind;
|
||||
argc -= optind;
|
||||
|
||||
if (pidset && *argv || !pidset && !*argv)
|
||||
usage();
|
||||
|
||||
if (inherit)
|
||||
trpoints |= KTRFAC_INHERIT;
|
||||
(void) signal(SIGSYS, no_ktrace);
|
||||
if (clear != NOTSET) {
|
||||
if (clear == CLEARALL) {
|
||||
ops = KTROP_CLEAR | KTRFLAG_DESCEND;
|
||||
pid = 1;
|
||||
} else
|
||||
ops |= pid ? KTROP_CLEAR : KTROP_CLEARFILE;
|
||||
|
||||
if (ktrace(tracefile, ops, trpoints, pid) < 0)
|
||||
error(tracefile);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if ((fd = open(tracefile, O_CREAT | O_WRONLY | (append ? 0 : O_TRUNC),
|
||||
DEFFILEMODE)) < 0)
|
||||
error(tracefile);
|
||||
(void)close(fd);
|
||||
|
||||
if (*argv) {
|
||||
if (ktrace(tracefile, ops, trpoints, getpid()) < 0)
|
||||
error();
|
||||
execvp(argv[0], &argv[0]);
|
||||
error(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
else if (ktrace(tracefile, ops, trpoints, pid) < 0)
|
||||
error(tracefile);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
rpid(p)
|
||||
char *p;
|
||||
{
|
||||
static int first;
|
||||
|
||||
if (first++) {
|
||||
(void)fprintf(stderr,
|
||||
"ktrace: only one -g or -p flag is permitted.\n");
|
||||
usage();
|
||||
}
|
||||
if (!*p) {
|
||||
(void)fprintf(stderr, "ktrace: illegal process id.\n");
|
||||
usage();
|
||||
}
|
||||
return(atoi(p));
|
||||
}
|
||||
|
||||
error(name)
|
||||
char *name;
|
||||
{
|
||||
(void)fprintf(stderr, "ktrace: %s: %s.\n", name, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
(void)fprintf(stderr,
|
||||
"usage:\tktrace [-aCcid] [-f trfile] [-g pgid] [-p pid] [-t [acgn]\n\tktrace [-aCcid] [-f trfile] [-t [acgn] command\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void no_ktrace()
|
||||
{
|
||||
(void) fprintf(stderr,
|
||||
"error:\tktrace() system call not supported in the running kernel\n\tre-compile kernel with 'options KTRACE'\n");
|
||||
exit(1);
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)ktrace.h 5.1 (Berkeley) 1/17/91
|
||||
* $Id: ktrace.h,v 1.2 1993/08/01 18:14:15 mycroft Exp $
|
||||
*/
|
||||
|
||||
#define ALL_POINTS (KTRFAC_SYSCALL | KTRFAC_SYSRET | KTRFAC_NAMEI | \
|
||||
KTRFAC_GENIO | KTRFAC_PSIG)
|
||||
|
||||
#define DEF_TRACEFILE "ktrace.out"
|
@ -1,102 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)subr.c 5.1 (Berkeley) 1/17/91";*/
|
||||
static char rcsid[] = "$Id: subr.c,v 1.2 1993/08/01 18:14:12 mycroft Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/user.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/ktrace.h>
|
||||
#include <stdio.h>
|
||||
#include "ktrace.h"
|
||||
|
||||
getpoints(s)
|
||||
char *s;
|
||||
{
|
||||
int facs = 0;
|
||||
|
||||
while (*s) {
|
||||
switch(*s) {
|
||||
case 'c':
|
||||
facs |= KTRFAC_SYSCALL | KTRFAC_SYSRET;
|
||||
break;
|
||||
case 'n':
|
||||
facs |= KTRFAC_NAMEI;
|
||||
break;
|
||||
case 'i':
|
||||
facs |= KTRFAC_GENIO;
|
||||
break;
|
||||
case 's':
|
||||
facs |= KTRFAC_PSIG;
|
||||
break;
|
||||
default:
|
||||
return (-1);
|
||||
}
|
||||
s++;
|
||||
}
|
||||
return (facs);
|
||||
}
|
||||
|
||||
timevaladd(t1, t2)
|
||||
struct timeval *t1, *t2;
|
||||
{
|
||||
t1->tv_sec += t2->tv_sec;
|
||||
t1->tv_usec += t2->tv_usec;
|
||||
timevalfix(t1);
|
||||
}
|
||||
|
||||
timevalsub(t1, t2)
|
||||
struct timeval *t1, *t2;
|
||||
{
|
||||
t1->tv_sec -= t2->tv_sec;
|
||||
t1->tv_usec -= t2->tv_usec;
|
||||
timevalfix(t1);
|
||||
}
|
||||
|
||||
timevalfix(t1)
|
||||
struct timeval *t1;
|
||||
{
|
||||
if (t1->tv_usec < 0) {
|
||||
t1->tv_sec--;
|
||||
t1->tv_usec += 1000000;
|
||||
}
|
||||
if (t1->tv_usec >= 1000000) {
|
||||
t1->tv_sec++;
|
||||
t1->tv_usec -= 1000000;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user