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