| /* |
| * dstore.c - AIX global storage for lsof |
| */ |
| |
| |
| /* |
| * Copyright 1994 Purdue Research Foundation, West Lafayette, Indiana |
| * 47907. All rights reserved. |
| * |
| * Written by Victor A. Abell |
| * |
| * This software is not subject to any license of the American Telephone |
| * and Telegraph Company or the Regents of the University of California. |
| * |
| * Permission is granted to anyone to use this software for any purpose on |
| * any computer system, and to alter it and redistribute it freely, subject |
| * to the following restrictions: |
| * |
| * 1. Neither the authors nor Purdue University are responsible for any |
| * consequences of the use of this software. |
| * |
| * 2. The origin of this software must not be misrepresented, either by |
| * explicit claim or by omission. Credit to the authors and Purdue |
| * University must appear in documentation and sources. |
| * |
| * 3. Altered versions must be plainly marked as such, and must not be |
| * misrepresented as being the original software. |
| * |
| * 4. This notice may not be removed or altered. |
| */ |
| |
| #ifndef lint |
| static char copyright[] = |
| "@(#) Copyright 1994 Purdue Research Foundation.\nAll rights reserved.\n"; |
| static char *rcsid = "$Id: dstore.c,v 1.12 2004/12/30 18:40:59 abe Exp $"; |
| #endif |
| |
| |
| #include "lsof.h" |
| |
| |
| /* |
| * Global storage definitions |
| */ |
| |
| #if defined(HAS_AFS) |
| struct nlist AFSnl[] = { |
| { "afs_rootFid", 0, 0, 0, 0, 0 }, |
| { "afs_volumes", 0, 0, 0, 0, 0 }, |
| }; |
| |
| # if defined(HASAOPT) |
| char *AFSApath = (char *)NULL; /* alternate AFS name list path |
| * (from -a) */ |
| # endif /* defined(HASAOPT) */ |
| |
| KA_T AFSVfsp = (KA_T)NULL; /* AFS vfs struct kernel address */ |
| #endif /* defined(HAS_AFS) */ |
| |
| # if AIXV>=4140 |
| struct clone *Clone = (struct clone *)NULL; |
| /* local clone information */ |
| int CloneMaj = -1; /* clone major device number */ |
| int ClonePtc = -1; /* /dev/ptc minor device number */ |
| # endif /* AIXV>=4140 */ |
| |
| int Kd = -1; /* /dev/kmem file descriptor */ |
| struct l_vfs *Lvfs = NULL; /* local vfs structure table */ |
| int Km = -1; /* /dev/mem file descriptor */ |
| |
| struct nlist Nl[] = { |
| |
| #if AIXV<4100 |
| { "u", 0, 0, 0, 0, 0 }, |
| #else /* AIXV>=4100 */ |
| { "__ublock", 0, 0, 0, 0, 0 }, |
| #endif /* AIXV<4100 */ |
| |
| }; |
| |
| #if defined(HASFSTRUCT) |
| /* |
| * Pff_tab[] - table for printing file flags |
| */ |
| |
| struct pff_tab Pff_tab[] = { |
| |
| # if defined(FREAD) |
| { (long)FREAD, FF_READ }, |
| # else /* !defined(FREAD) */ |
| # if defined(_FREAD) |
| { (long)_FREAD, FF_READ }, |
| # endif /* defined(_FREAD) */ |
| # endif /* defined(FREAD) */ |
| |
| # if defined(FWRITE) |
| { (long)FWRITE, FF_WRITE }, |
| # else /* !defined(FWRITE) */ |
| # if defined(_FWRITE) |
| { (long)_FWRITE, FF_WRITE }, |
| # endif /* defined(_FWRITE) */ |
| # endif /* defined(FWRITE) */ |
| |
| # if defined(FNONBLOCK) |
| { (long)FNONBLOCK, FF_NBLOCK }, |
| # else /* !defined(FNONBLOCK) */ |
| # if defined(_FNONBLOCK) |
| { (long)_FNONBLOCK, FF_NBLOCK }, |
| # endif /* defined(_FNONBLOCK) */ |
| # endif /* defined(FNONBLOCK) */ |
| |
| # if defined(FAPPEND) |
| { (long)FAPPEND, FF_APPEND }, |
| # else /* !defined(FAPPEND) */ |
| # if defined(_FAPPEND) |
| { (long)_FAPPEND, FF_APPEND }, |
| # endif /* defined(_FAPPEND) */ |
| # endif /* defined(FAPPEND) */ |
| |
| # if defined(FSYNC) |
| { (long)FSYNC, FF_SYNC }, |
| # else /* !defined(FSYNC) */ |
| # if defined(_FSYNC) |
| { (long)_FSYNC, FF_SYNC }, |
| # endif /* defined(_FSYNC) */ |
| # endif /* defined(FSYNC) */ |
| |
| # if defined(FEXEC) |
| { (long)FEXEC, FF_EXEC }, |
| # else /* !defined(FEXEC) */ |
| # if defined(_FEXEC) |
| { (long)_FEXEC, FF_EXEC }, |
| # endif /* defined(_FEXEC) */ |
| # endif /* defined(FEXEC) */ |
| |
| # if defined(FCREAT) |
| { (long)FCREAT, FF_CREAT }, |
| # else /* !defined(FCREAT) */ |
| # if defined(_FCREAT) |
| { (long)_FCREAT, FF_CREAT }, |
| # endif /* defined(_FCREAT) */ |
| # endif /* defined(FCREAT) */ |
| |
| # if defined(FTRUNC) |
| { (long)FTRUNC, FF_TRUNC }, |
| # else /* !defined(FTRUNC) */ |
| # if defined(_FTRUNC) |
| { (long)_FTRUNC, FF_TRUNC }, |
| # endif /* defined(_FTRUNC) */ |
| # endif /* defined(FTRUNC) */ |
| |
| # if defined(FEXCL) |
| { (long)FEXCL, FF_EXCL }, |
| # else /* !defined(FEXCL) */ |
| # if defined(_FEXCL) |
| { (long)_EXCL, FF_EXCL }, |
| # endif /* defined(_FEXCL) */ |
| # endif /* defined(FEXCL) */ |
| |
| # if defined(FNOCTTY) |
| { (long)FNOCTTY, FF_NOCTTY }, |
| # else /* !defined(FNOCTTY) */ |
| # if defined(_FNOCTTY) |
| { (long)_FNOCTTY, FF_NOCTTY }, |
| # endif /* defined(_FNOCTTY) */ |
| # endif /* defined(FNOCTTY) */ |
| |
| # if defined(FRSHARE) |
| { (long)FRSHARE, FF_RSHARE }, |
| # else /* !defined(FRSHARE) */ |
| # if defined(_FRSHARE) |
| { (long)_FRSHARE, FF_RSHARE }, |
| # endif /* defined(_FRSHARE) */ |
| # endif /* defined(FRSHARE) */ |
| |
| # if defined(FDEFER) |
| { (long)FDEFER, FF_DEFER }, |
| # else /* !defined(FDEFER) */ |
| # if defined(_FDEFER) |
| { (long)_FDEFER, FF_DEFER }, |
| # endif /* defined(_FDEFER) */ |
| # endif /* defined(FDEFER) */ |
| |
| # if defined(FDELAY) |
| { (long)FDELAY, FF_DELAY }, |
| # else /* !defined(FDELAY) */ |
| # if defined(_FDELAY) |
| { (long)_FDELAY, FF_DELAY }, |
| # endif /* defined(_FDELAY) */ |
| # endif /* defined(FDELAY) */ |
| |
| # if defined(FNDELAY) |
| { (long)FNDELAY, FF_NDELAY }, |
| # else /* !defined(FNDELAY) */ |
| # if defined(_FNDELAY) |
| { (long)_FNDELAY, FF_NDELAY }, |
| # endif /* defined(_FNDELAY) */ |
| # endif /* defined(FNDELAY) */ |
| |
| # if defined(FNSHARE) |
| { (long)FNSHARE, FF_NSHARE }, |
| # else /* !defined(FNSHARE) */ |
| # if defined(_FNSHARE) |
| { (long)_FNSHARE, FF_NSHARE }, |
| # endif /* defined(_FNSHARE) */ |
| # endif /* defined(FNSHARE) */ |
| |
| # if defined(FASYNC) |
| { (long)FASYNC, FF_ASYNC }, |
| # else /* !defined(FASYNC) */ |
| # if defined(_FASYNC) |
| { (long)_FASYNC, FF_ASYNC }, |
| # endif /* defined(_FASYNC) */ |
| # endif /* defined(FASYNC) */ |
| |
| # if defined(FAIO) |
| { (long)FAIO, FF_AIO }, |
| # else /* !defined(FAIO) */ |
| # if defined(_FAIO) |
| { (long)_FAIO, FF_AIO }, |
| # endif /* defined(_FAIO) */ |
| # endif /* defined(FAIO) */ |
| |
| # if defined(FCIO) |
| { (long)FCIO, FF_CIO }, |
| # else /* !defined(FCIO) */ |
| # if defined(_FCIO) |
| { (long)_FCIO, FF_CIO }, |
| # endif /* defined(_FCIO) */ |
| # endif /* defined(FCIO) */ |
| |
| # if defined(FMOUNT) |
| { (long)FMOUNT, FF_MOUNT }, |
| # else /* !defined(FMOUNT) */ |
| # if defined(_FMOUNT) |
| { (long)_FMOUNT, FF_MOUNT }, |
| # endif /* defined(_FMOUNT) */ |
| # endif /* defined(FMOUNT) */ |
| |
| # if defined(FSYNCALL) |
| { (long)FSYNCALL, FF_SYNC }, |
| # else /* !defined(FSYNCALL) */ |
| # if defined(_FSYNCALL) |
| { (long)_FSYNCALL, FF_SYNC }, |
| # endif /* defined(_FSYNCALL) */ |
| # endif /* defined(FSYNCALL) */ |
| |
| # if defined(FNOCACHE) |
| { (long)FNOCACHE, FF_NOCACHE }, |
| # else /* defined(FNOCACHE) */ |
| # if defined(_FNOCACHE) |
| { (long)_FNOCACHE, FF_NOCACHE }, |
| # endif /* defined(_FNOCACHE) */ |
| # endif /* defined(FNOCACHE) */ |
| |
| # if defined(FREADSYNC) |
| { (long)FREADSYNC, FF_RSYNC }, |
| # else /* !defined(FREADSYNC) */ |
| # if defined(_FREADSYNC) |
| { (long)_FREADSYNC, FF_RSYNC }, |
| # endif /* defined(_FREADSYNC) */ |
| # endif /* defined(FREADSYNC) */ |
| |
| # if defined(FDATASYNC) |
| { (long)FDATASYNC, FF_DSYNC }, |
| # else /* !defined(FDATASYNC) */ |
| # if defined(_FDATASYNC) |
| { (long)_FDATASYNC, FF_DSYNC }, |
| # endif /* defined(_FDATASYNC) */ |
| # endif /* defined(FDATASYNC) */ |
| |
| # if defined(FDEFERIND) |
| { (long)FDEFERIND, FF_DEFERIND }, |
| # else /* !defined(FDEFERIND) */ |
| # if defined(_FDEFERIND) |
| { (long)_FDEFERIND, FF_DEFERIND }, |
| # endif /* defined(_FDEFERIND) */ |
| # endif /* defined(FDEFERIND) */ |
| |
| # if defined(FDATAFLUSH) |
| { (long)FDATAFLUSH, FF_DATAFLUSH }, |
| # else /* !defined(FDATAFLUSH) */ |
| # if defined(_FDATAFLUSH) |
| { (long)_FDATAFLUSH, FF_DATAFLUSH }, |
| # endif /* defined(_FDATAFLUSH) */ |
| # endif /* defined(FDATAFLUSH) */ |
| |
| # if defined(FCLREAD) |
| { (long)FCLREAD, FF_CLREAD }, |
| # else /* !defined(FCLREAD) */ |
| # if defined(_FCLREAD) |
| { (long)_FCLREAD, FF_CLREAD }, |
| # endif /* defined(_FCLREAD) */ |
| # endif /* defined(FCLREAD) */ |
| |
| # if defined(FLARGEFILE) |
| { (long)FLARGEFILE, FF_LARGEFILE }, |
| # else /* !defined(FLARGEFILE) */ |
| # if defined(_FLARGEFILE) |
| { (long)_FLARGEFILE, FF_LARGEFILE }, |
| # endif /* defined(_FLARGEFILE) */ |
| # endif /* defined(FLARGEFILE) */ |
| |
| # if defined(FDIRECT) |
| { (long)FDIRECT, FF_DIRECT }, |
| # else /* !defined(FDIRECT) */ |
| # if defined(_FDIRECT) |
| { (long)_FDIRECT, FF_DIRECT }, |
| # endif /* defined(_FDIRECT) */ |
| # endif /* defined(FDIRECT) */ |
| |
| # if defined(FSNAPSHOT) |
| { (long)FSNAPSHOT, FF_SNAP }, |
| # else /* !defined(FSNAPSHOT) */ |
| # if defined(_FSNAPSHOT) |
| { (long)_FSNAPSHOT, FF_SNAP }, |
| # endif /* defined(_FSNAPSHOT) */ |
| # endif /* defined(FAIO) */ |
| |
| # if defined(FDOCLONE) |
| { (long)FDOCLONE, FF_DOCLONE }, |
| # else /* !defined(FDOCLONE) */ |
| # if defined(_FDOCLONE) |
| { (long)_FDOCLONE, FF_DOCLONE }, |
| # endif /* defined(_FDOCLONE) */ |
| # endif /* defined(FDOCLONE) */ |
| |
| # if defined(FKERNEL) |
| { (long)FKERNEL, FF_KERNEL }, |
| # else /* !defined(FKERNEL) */ |
| # if defined(_FKERNEL) |
| { (long)_FKERNEL, FF_KERNEL }, |
| # endif /* defined(_FKERNEL) */ |
| # endif /* defined(FKERNEL) */ |
| |
| # if defined(FMSYNC) |
| { (long)FMSYNC, FF_MSYNC }, |
| # else /* !defined(FMSYNC) */ |
| # if defined(_FMSYNC) |
| { (long)_FMSYNC, FF_MSYNC }, |
| # endif /* defined(_FMSYNC) */ |
| # endif /* defined(FMSYNC) */ |
| |
| # if defined(GCFDEFER) |
| { (long)GCFDEFER, FF_GCFDEFER }, |
| # endif /* defined(GCFDEFER) */ |
| |
| # if defined(GCFMARK) |
| { (long)GCFMARK, FF_GCFMARK }, |
| # endif /* defined(GCFMARK) */ |
| |
| { (long)0, NULL } |
| }; |
| |
| |
| /* |
| * Pof_tab[] - table for print process open file flags |
| */ |
| |
| struct pff_tab Pof_tab[] = { |
| |
| # if defined(UF_EXCLOSE) |
| { (long)UF_EXCLOSE, POF_CLOEXEC }, |
| # endif /* defined(UF_EXCLOSE) */ |
| |
| # if defined(UF_MAPPED) |
| { (long)UF_MAPPED, POF_MAPPED }, |
| # endif /* defined(UF_MAPPED) */ |
| |
| # if defined(UF_FDLOCK) |
| { (long)UF_FDLOCK, POF_FDLOCK }, |
| # endif /* defined(UF_FDLOCK) */ |
| |
| # if defined(UF_AUD_READ) |
| { (long)UF_AUD_READ, POF_BNRD }, |
| # endif /* defined(UF_AUD_READ) */ |
| |
| # if defined(UF_AUD_WRITE) |
| { (long)UF_AUD_WRITE, POF_BNWR }, |
| # endif /* defined(UF_AUD_WRITE) */ |
| |
| # if defined(UF_FSHMAT) |
| { (long)UF_FSHMAT, POF_FSHMAT }, |
| # endif /* defined(UF_FSHMAT) */ |
| |
| # if defined(UF_CLOSING) |
| { (long)UF_CLOSING, POF_CLOSING }, |
| # endif /* defined(UF_CLOSING) */ |
| |
| # if defined(UF_ALLOCATED) |
| { (long)UF_ALLOCATED, POF_ALLOCATED }, |
| # endif /* defined(UF_ALLOCATED) */ |
| |
| { (long)0, NULL } |
| }; |
| #endif /* defined(HASFSTRUCT) */ |
| |
| #if AIXV>=4110 |
| struct ublock __ublock; /* dummy so we can define _KERNEL |
| * for <sys/user.h> */ |
| |
| # if AIXA>2 |
| void aix_dstore_dummy_function() {} /* for ia64 idebug */ |
| # endif /* AIXA>2 */ |
| #endif /* AIXV>=4110 */ |