blob: c4e3ed9889ce26ea336e3377648c03b53dcbbfda [file] [log] [blame]
/*
* 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 */