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
can't reset it if not set up
[unix-history]
/
usr
/
src
/
usr.sbin
/
kgmon
/
kgmon.c
diff --git
a/usr/src/usr.sbin/kgmon/kgmon.c
b/usr/src/usr.sbin/kgmon/kgmon.c
index
b766b86
..
4ebc137
100644
(file)
--- a/
usr/src/usr.sbin/kgmon/kgmon.c
+++ b/
usr/src/usr.sbin/kgmon/kgmon.c
@@
-1,11
+1,22
@@
-/* Copyright (c) 1982 Regents of the University of California */
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved. The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
#ifndef lint
#ifndef lint
-static char sccsid[] = "@(#)kgmon.c 4.7 83/03/10";
-#endif
+char copyright[] =
+"@(#) Copyright (c) 1983 Regents of the University of California.\n\
+ All rights reserved.\n";
+#endif not lint
+
+#ifndef lint
+static char sccsid[] = "@(#)kgmon.c 5.3 (Berkeley) %G%";
+#endif not lint
#include <sys/param.h>
#include <machine/pte.h>
#include <sys/param.h>
#include <machine/pte.h>
+#include <sys/file.h>
#include <sys/vm.h>
#include <stdio.h>
#include <nlist.h>
#include <sys/vm.h>
#include <stdio.h>
#include <nlist.h>
@@
-47,6
+58,13
@@
struct nlist nl[] = {
0,
};
0,
};
+#if defined(vax)
+#define clear(x) ((x) &~ 0x80000000)
+#endif
+#if defined(tahoe)
+#define clear(x) ((x) &~ 0xc0000000)
+#endif
+
struct pte *Sysmap;
char *system = "/vmunix";
struct pte *Sysmap;
char *system = "/vmunix";
@@
-59,26
+77,26
@@
main(argc, argv)
int argc;
char *argv[];
{
int argc;
char *argv[];
{
- int mode, disp, openmode =
0
;
+ int mode, disp, openmode =
O_RDONLY
;
argc--, argv++;
argc--, argv++;
- while (argv[0][0] == '-') {
+ while (arg
c > 0 && arg
v[0][0] == '-') {
switch (argv[0][1]) {
case 'b':
bflag++;
switch (argv[0][1]) {
case 'b':
bflag++;
- openmode =
2
;
+ openmode =
O_RDWR
;
break;
case 'h':
hflag++;
break;
case 'h':
hflag++;
- openmode =
2
;
+ openmode =
O_RDWR
;
break;
case 'r':
rflag++;
break;
case 'r':
rflag++;
- openmode =
2
;
+ openmode =
O_RDWR
;
break;
case 'p':
pflag++;
break;
case 'p':
pflag++;
- openmode =
2
;
+ openmode =
O_RDWR
;
break;
default:
printf("Usage: kgmon [ -b -h -r -p system memory ]\n");
break;
default:
printf("Usage: kgmon [ -b -h -r -p system memory ]\n");
@@
-101,7
+119,7
@@
main(argc, argv)
}
kmem = open(kmemf, openmode);
if (kmem < 0) {
}
kmem = open(kmemf, openmode);
if (kmem < 0) {
- openmode =
0
;
+ openmode =
O_RDONLY
;
kmem = open(kmemf, openmode);
if (kmem < 0) {
fprintf(stderr, "cannot open ");
kmem = open(kmemf, openmode);
if (kmem < 0) {
fprintf(stderr, "cannot open ");
@@
-122,8
+140,8
@@
main(argc, argv)
if (kflag) {
off_t off;
if (kflag) {
off_t off;
- off =
nl[N_SYSMAP].n_value & 0x7fffffff
;
- lseek(kmem, off,
0
);
+ off =
clear(nl[N_SYSMAP].n_value)
;
+ lseek(kmem, off,
L_SET
);
nl[N_SYSSIZE].n_value *= 4;
Sysmap = (struct pte *)malloc(nl[N_SYSSIZE].n_value);
if (Sysmap == 0) {
nl[N_SYSSIZE].n_value *= 4;
Sysmap = (struct pte *)malloc(nl[N_SYSSIZE].n_value);
if (Sysmap == 0) {
@@
-140,7
+158,7
@@
main(argc, argv)
else
disp = mode;
if (pflag) {
else
disp = mode;
if (pflag) {
- if (openmode ==
0
&& mode == PROFILING_ON)
+ if (openmode ==
O_RDONLY
&& mode == PROFILING_ON)
fprintf(stderr, "data may be inconsistent\n");
dumpstate();
}
fprintf(stderr, "data may be inconsistent\n");
dumpstate();
}
@@
-169,7
+187,7
@@
dumpstate()
}
ssiz = kfetch(N_SSIZ);
sbuf = kfetch(N_SBUF);
}
ssiz = kfetch(N_SSIZ);
sbuf = kfetch(N_SBUF);
- klseek(kmem, (off_t)sbuf,
0
);
+ klseek(kmem, (off_t)sbuf,
L_SET
);
for (i = ssiz; i > 0; i -= BUFSIZ) {
read(kmem, buf, i < BUFSIZ ? i : BUFSIZ);
write(fd, buf, i < BUFSIZ ? i : BUFSIZ);
for (i = ssiz; i > 0; i -= BUFSIZ) {
read(kmem, buf, i < BUFSIZ ? i : BUFSIZ);
write(fd, buf, i < BUFSIZ ? i : BUFSIZ);
@@
-178,7
+196,7
@@
dumpstate()
fromssize = s_textsize / HASHFRACTION;
froms = (u_short *)malloc(fromssize);
kfroms = kfetch(N_FROMS);
fromssize = s_textsize / HASHFRACTION;
froms = (u_short *)malloc(fromssize);
kfroms = kfetch(N_FROMS);
- klseek(kmem, kfroms,
0
);
+ klseek(kmem, kfroms,
L_SET
);
i = read(kmem, ((char *)(froms)), fromssize);
if (i != fromssize) {
fprintf(stderr, "read froms: request %d, got %d", fromssize, i);
i = read(kmem, ((char *)(froms)), fromssize);
if (i != fromssize) {
fprintf(stderr, "read froms: request %d, got %d", fromssize, i);
@@
-188,7
+206,7
@@
dumpstate()
tossize = (s_textsize * ARCDENSITY / 100) * sizeof(struct tostruct);
tos = (struct tostruct *)malloc(tossize);
ktos = kfetch(N_TOS);
tossize = (s_textsize * ARCDENSITY / 100) * sizeof(struct tostruct);
tos = (struct tostruct *)malloc(tossize);
ktos = kfetch(N_TOS);
- klseek(kmem, ktos,
0
);
+ klseek(kmem, ktos,
L_SET
);
i = read(kmem, ((char *)(tos)), tossize);
if (i != tossize) {
fprintf(stderr, "read tos: request %d, got %d", tossize, i);
i = read(kmem, ((char *)(tos)), tossize);
if (i != tossize) {
fprintf(stderr, "read tos: request %d, got %d", tossize, i);
@@
-233,7
+251,7
@@
resetstate()
sbuf = kfetch(N_SBUF);
ssiz -= sizeof(struct phdr);
sbuf += sizeof(struct phdr);
sbuf = kfetch(N_SBUF);
ssiz -= sizeof(struct phdr);
sbuf += sizeof(struct phdr);
- klseek(kmem, (off_t)sbuf,
0
);
+ klseek(kmem, (off_t)sbuf,
L_SET
);
for (i = ssiz; i > 0; i -= BUFSIZ)
if (write(kmem, buf, i < BUFSIZ ? i : BUFSIZ) < 0) {
perror("sbuf write");
for (i = ssiz; i > 0; i -= BUFSIZ)
if (write(kmem, buf, i < BUFSIZ ? i : BUFSIZ) < 0) {
perror("sbuf write");
@@
-242,7
+260,7
@@
resetstate()
s_textsize = kfetch(N_S_TEXTSIZE);
fromssize = s_textsize / HASHFRACTION;
kfroms = kfetch(N_FROMS);
s_textsize = kfetch(N_S_TEXTSIZE);
fromssize = s_textsize / HASHFRACTION;
kfroms = kfetch(N_FROMS);
- klseek(kmem, kfroms,
0
);
+ klseek(kmem, kfroms,
L_SET
);
for (i = fromssize; i > 0; i -= BUFSIZ)
if (write(kmem, buf, i < BUFSIZ ? i : BUFSIZ) < 0) {
perror("kforms write");
for (i = fromssize; i > 0; i -= BUFSIZ)
if (write(kmem, buf, i < BUFSIZ ? i : BUFSIZ) < 0) {
perror("kforms write");
@@
-250,7
+268,7
@@
resetstate()
}
tossize = (s_textsize * ARCDENSITY / 100) * sizeof(struct tostruct);
ktos = kfetch(N_TOS);
}
tossize = (s_textsize * ARCDENSITY / 100) * sizeof(struct tostruct);
ktos = kfetch(N_TOS);
- klseek(kmem, ktos,
0
);
+ klseek(kmem, ktos,
L_SET
);
for (i = tossize; i > 0; i -= BUFSIZ)
if (write(kmem, buf, i < BUFSIZ ? i : BUFSIZ) < 0) {
perror("ktos write");
for (i = tossize; i > 0; i -= BUFSIZ)
if (write(kmem, buf, i < BUFSIZ ? i : BUFSIZ) < 0) {
perror("ktos write");
@@
-267,7
+285,7
@@
turnonoff(onoff)
printf("profiling: not defined in kernel\n");
exit(10);
}
printf("profiling: not defined in kernel\n");
exit(10);
}
- klseek(kmem, off,
0
);
+ klseek(kmem, off,
L_SET
);
write(kmem, (char *)&onoff, sizeof (onoff));
}
write(kmem, (char *)&onoff, sizeof (onoff));
}
@@
-281,7
+299,7
@@
kfetch(index)
printf("%s: not defined in kernel\n", nl[index].n_name);
exit(11);
}
printf("%s: not defined in kernel\n", nl[index].n_name);
exit(11);
}
- if (klseek(kmem, off,
0
) == -1) {
+ if (klseek(kmem, off,
L_SET
) == -1) {
perror("lseek");
exit(12);
}
perror("lseek");
exit(12);
}
@@
-298,9
+316,7
@@
klseek(fd, base, off)
if (kflag) {
/* get kernel pte */
if (kflag) {
/* get kernel pte */
-#if vax
- base &= 0x7fffffff;
-#endif
+ base = clear(base);
base = ((int)ptob(Sysmap[btop(base)].pg_pfnum))+(base&(NBPG-1));
}
return (lseek(fd, base, off));
base = ((int)ptob(Sysmap[btop(base)].pg_pfnum))+(base&(NBPG-1));
}
return (lseek(fd, base, off));