opdump.c revision 1.5
198944Sobrien/*	$NetBSD: opdump.c,v 1.5 2006/11/07 22:10:53 pooka Exp $	*/
298944Sobrien
3130803Smarcel/*
4130803Smarcel * Copyright (c) 2005, 2006  Antti Kantee.  All Rights Reserved.
598944Sobrien *
698944Sobrien * Development of this software was supported by the
798944Sobrien * Google Summer of Code program and the Ulla Tuominen Foundation.
898944Sobrien * The Google SoC project was mentored by Bill Studenmund.
998944Sobrien *
1098944Sobrien * Redistribution and use in source and binary forms, with or without
1198944Sobrien * modification, are permitted provided that the following conditions
1298944Sobrien * are met:
1398944Sobrien * 1. Redistributions of source code must retain the above copyright
1498944Sobrien *    notice, this list of conditions and the following disclaimer.
1598944Sobrien * 2. Redistributions in binary form must reproduce the above copyright
1698944Sobrien *    notice, this list of conditions and the following disclaimer in the
1798944Sobrien *    documentation and/or other materials provided with the distribution.
1898944Sobrien * 3. The name of the company nor the name of the author may be used to
1998944Sobrien *    endorse or promote products derived from this software without specific
2098944Sobrien *    prior written permission.
2198944Sobrien *
2298944Sobrien * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
2398944Sobrien * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2498944Sobrien * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2598944Sobrien * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2698944Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2798944Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2898944Sobrien * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29130803Smarcel * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30130803Smarcel * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31130803Smarcel * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32130803Smarcel * SUCH DAMAGE.
3398944Sobrien */
3498944Sobrien
35130803Smarcel/* Pretty-printing helper routines for VFS/VOP request contents */
3698944Sobrien
3798944Sobrien#include <sys/cdefs.h>
3898944Sobrien#if !defined(lint)
39130803Smarcel__RCSID("$NetBSD: opdump.c,v 1.5 2006/11/07 22:10:53 pooka Exp $");
40130803Smarcel#endif /* !lint */
41130803Smarcel
4298944Sobrien#include <puffs.h>
43130803Smarcel#include <puffsdump.h>
44130803Smarcel#include <stdio.h>
45130803Smarcel
46130803Smarcel/* XXX! */
47130803Smarcelconst char *vfsop_revmap[] = {
4898944Sobrien	"PUFFS_VFS_MOUNT",
4998944Sobrien	"PUFFS_VFS_START",
5098944Sobrien	"PUFFS_VFS_UNMOUNT",
5198944Sobrien	"PUFFS_VFS_ROOT",
5298944Sobrien	"PUFFS_VFS_STATVFS",
5398944Sobrien	"PUFFS_VFS_SYNC",
5498944Sobrien	"PUFFS_VFS_VGET",
5598944Sobrien	"PUFFS_VFS_FHTOVP",
5698944Sobrien	"PUFFS_VFS_VPTOFH",
5798944Sobrien	"PUFFS_VFS_INIT",
5898944Sobrien	"PUFFS_VFS_DONE",
5998944Sobrien	"PUFFS_VFS_SNAPSHOT",
6098944Sobrien	"PUFFS_VFS_EXTATTCTL"
6198944Sobrien};
6298944Sobrien/* XXX! */
6398944Sobrienconst char *vnop_revmap[] = {
6498944Sobrien	"PUFFS_VN_LOOKUP",
6598944Sobrien	"PUFFS_VN_CREATE",
6698944Sobrien	"PUFFS_VN_MKNOD",
6798944Sobrien	"PUFFS_VN_OPEN",
6898944Sobrien	"PUFFS_VN_CLOSE",
6998944Sobrien	"PUFFS_VN_ACCESS",
7098944Sobrien	"PUFFS_VN_GETATTR",
7198944Sobrien	"PUFFS_VN_SETATTR",
7298944Sobrien	"PUFFS_VN_READ",
7398944Sobrien	"PUFFS_VN_WRITE",
7498944Sobrien	"PUFFS_VN_IOCTL",
7598944Sobrien	"PUFFS_VN_FCNTL",
7698944Sobrien	"PUFFS_VN_POLL",
7798944Sobrien	"PUFFS_VN_KQFILTER",
7898944Sobrien	"PUFFS_VN_REVOKE",
7998944Sobrien	"PUFFS_VN_MMAP",
8098944Sobrien	"PUFFS_VN_FSYNC",
8198944Sobrien	"PUFFS_VN_SEEK",
8298944Sobrien	"PUFFS_VN_REMOVE",
8398944Sobrien	"PUFFS_VN_LINK",
8498944Sobrien	"PUFFS_VN_RENAME",
8598944Sobrien	"PUFFS_VN_MKDIR",
86130803Smarcel	"PUFFS_VN_RMDIR",
8798944Sobrien	"PUFFS_VN_SYMLINK",
8898944Sobrien	"PUFFS_VN_READDIR",
8998944Sobrien	"PUFFS_VN_READLINK",
9098944Sobrien	"PUFFS_VN_ABORTOP",
9198944Sobrien	"PUFFS_VN_INACTIVE",
9298944Sobrien	"PUFFS_VN_RECLAIM",
93130803Smarcel	"PUFFS_VN_LOCK",
9498944Sobrien	"PUFFS_VN_UNLOCK",
95130803Smarcel	"PUFFS_VN_BMAP",
96130803Smarcel	"PUFFS_VN_STRATEGY",
9798944Sobrien	"PUFFS_VN_PRINT",
9898944Sobrien	"PUFFS_VN_ISLOCKED",
9998944Sobrien	"PUFFS_VN_PATHCONF",
10098944Sobrien	"PUFFS_VN_ADVLOCK",
101130803Smarcel	"PUFFS_VN_LEASE",
102130803Smarcel	"PUFFS_VN_WHITEOUT",
103130803Smarcel	"PUFFS_VN_GETPAGES",
104130803Smarcel	"PUFFS_VN_PUTPAGES",
105130803Smarcel	"PUFFS_VN_BWRITE",
10698944Sobrien	"PUFFS_VN_GETEXTATTR",
10798944Sobrien	"PUFFS_VN_LISTEXTATTR",
10898944Sobrien	"PUFFS_VN_OPENEXTATTR",
10998944Sobrien	"PUFFS_VN_DELETEEXTATTR",
11098944Sobrien	"PUFFS_VN_SETEXTATTR",
11198944Sobrien};
11298944Sobrien
11398944Sobrienvoid
11498944Sobrienpuffsdump_req(struct puffs_req *preq)
115130803Smarcel{
116130803Smarcel	const char **map;
117130803Smarcel
118130803Smarcel	map = PUFFSOP_OPCLASS(preq->preq_opclass) == PUFFSOP_VFS
119130803Smarcel	    ? vfsop_revmap : vnop_revmap;
120130803Smarcel	printf("\treqid: %" PRIuFAST64 ", opclass %d%s, optype: %s, "
121130803Smarcel	    "cookie: %p,\n\t\taux: %p, auxlen: %zu\n",
122130803Smarcel	    preq->preq_id, PUFFSOP_OPCLASS(preq->preq_opclass),
123130803Smarcel	    PUFFSOP_WANTREPLY(preq->preq_opclass) ? "" : " (FAF)",
124130803Smarcel	    map[preq->preq_optype], preq->preq_cookie,
125130803Smarcel	    preq->preq_aux, preq->preq_auxlen);
126130803Smarcel}
12798944Sobrien
12898944Sobrienvoid
12998944Sobrienpuffsdump_cookie(void *c, const char *cookiename)
13098944Sobrien{
13198944Sobrien
13298944Sobrien	printf("\t%scookie: at %p\n", cookiename, c);
13398944Sobrien}
13498944Sobrien
13598944Sobrien#if 0
13698944Sobrienstatic const char *cn_opnames[] = {
13798944Sobrien	"LOOKUP",
13898944Sobrien	"CREATE",
13998944Sobrien	"DELETE",
14098944Sobrien	"RENAME"
14198944Sobrien};
14298944Sobrienvoid
14398944Sobrienpuffsdump_cn(struct puffs_cn *pcn)
14498944Sobrien{
145130803Smarcel
146130803Smarcel	printf("\tpuffs_cn: %s (%sfollow)\n",
147130803Smarcel	    cn_opnames[pcn->pcn_nameio & PUFFSLOOKUP_OPMASK],
148130803Smarcel	    pcn->pcn_nameio&PUFFSLOOKUP_OPTIONS==PUFFSLOOKUP_NOFOLLOW?"no":"");
149130803Smarcel	/*
150130803Smarcel	TOFINISH
151130803Smarcel	*/
152130803Smarcel}
15398944Sobrien#endif
15498944Sobrien
15598944Sobrienvoid
15698944Sobrien/*ARGSUSED*/
15798944Sobrienpuffsdump_creds(struct puffs_cred *pcr)
15898944Sobrien{
15998944Sobrien
16098944Sobrien}
16198944Sobrien
16298944Sobrienvoid
16398944Sobrienpuffsdump_int(int value, const char *name)
16498944Sobrien{
16598944Sobrien
16698944Sobrien	printf("\tint (%s): %d\n", name, value);
16798944Sobrien}
16898944Sobrien