summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorkbyanc <kbyanc@FreeBSD.org>2002-01-02 06:25:39 +0000
committerkbyanc <kbyanc@FreeBSD.org>2002-01-02 06:25:39 +0000
commit4138d6fd95e561858b2c915db352cf0c7494103f (patch)
tree4f5c08bbed01bc8386afda16acdf22d054643501 /tools
parent7786598a0851e0f45c48042fa66efd3d2b57effa (diff)
downloadFreeBSD-src-4138d6fd95e561858b2c915db352cf0c7494103f.zip
FreeBSD-src-4138d6fd95e561858b2c915db352cf0c7494103f.tar.gz
Include definition for struct namecache (it isn't exported via any header)
so this builds again. Replace hardcoded name length magic with NAME_MAX.
Diffstat (limited to 'tools')
-rw-r--r--tools/diag/dumpvfscache/dumpvfscache.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/tools/diag/dumpvfscache/dumpvfscache.c b/tools/diag/dumpvfscache/dumpvfscache.c
index b1a23af..3f5eb57 100644
--- a/tools/diag/dumpvfscache/dumpvfscache.c
+++ b/tools/diag/dumpvfscache/dumpvfscache.c
@@ -5,9 +5,11 @@
#include <fcntl.h>
#include <kvm.h>
#include <nlist.h>
+#include <sysexits.h>
#include <sys/uio.h>
#include <sys/namei.h>
#include <sys/param.h>
+#include <sys/queue.h>
#include <sys/time.h>
#include <sys/vnode.h>
/*----------------------------------*/
@@ -18,6 +20,18 @@ static u_int crc16_table[16] = {
0x5000, 0x9C01, 0x8801, 0x4400
};
+/* XXX Taken from sys/kern/vfs_cache.c */
+struct namecache {
+ LIST_ENTRY(namecache) nc_hash;
+ LIST_ENTRY(namecache) nc_src;
+ TAILQ_ENTRY(namecache) nc_dst;
+ struct vnode *nc_dvp;
+ struct vnode *nc_vp;
+ u_char nc_flag;
+ u_char nc_nlen;
+ char nc_name[0];
+};
+
static u_short
wlpsacrc(u_char *buf, u_int len)
{
@@ -59,14 +73,16 @@ main(int argc, char **argv)
struct namecache *nc;
struct vnode vn;
- kvm_t *kvm = kvm_open(0, 0, 0, O_RDONLY, 0);
+ kvm_t *kvm = kvm_open(NULL, NULL, NULL, O_RDONLY, argv[0]);
+ if (kvm == NULL)
+ return(EX_OSERR);
printf("kvm: %p\n", kvm);
printf("kvm_nlist: %d\n", kvm_nlist(kvm, nl));
kvm_read(kvm, nl[0].n_value, &nchash, sizeof nchash);
nchash++;
nchashtbl = malloc(nchash * sizeof *nchashtbl);
- nc = malloc(sizeof *nc + 400);
+ nc = malloc(sizeof *nc + NAME_MAX);
newbucket = malloc(nchash * sizeof (int));
memset(newbucket, 0, nchash * sizeof (int));
kvm_read(kvm, nl[1].n_value, &p, sizeof p);
@@ -79,7 +95,7 @@ main(int argc, char **argv)
p = (u_long)LIST_FIRST(nchashtbl+i);
while (p) {
nb++;
- kvm_read(kvm, p, nc, sizeof *nc + 400);
+ kvm_read(kvm, p, nc, sizeof *nc + NAME_MAX);
kvm_read(kvm, (u_long)nc->nc_dvp, &vn, sizeof vn);
nc->nc_name[nc->nc_nlen] = '\0';
for (j=k=kn=0;nc->nc_name[j];j++) {
OpenPOWER on IntegriCloud