home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1992 Michael A. Cooper.
- * This software may be freely distributed provided it is not sold for
- * profit and the author is credited appropriately.
- */
-
- /*
- * $Header: /src/common/usc/bin/sysinfo/RCS/defs.h,v 1.30 1992/04/26 23:32:06 mcooper Exp $
- *
- * $Log: defs.h,v $
- * Revision 1.30 1992/04/26 23:32:06 mcooper
- * Add Copyright notice
- *
- * Revision 1.29 1992/04/17 23:27:51 mcooper
- * Add support for ROM Version information (Sun only for now).
- *
- * Revision 1.28 1992/04/17 01:07:59 mcooper
- * More de-linting
- *
- * Revision 1.27 1992/04/16 02:25:39 mcooper
- * Bug fixes, de-linting, and other changes found with CodeCenter.
- *
- * Revision 1.26 1992/04/15 02:00:36 mcooper
- * Major re-write and simplification of command line options.
- *
- * Revision 1.25 1992/03/31 18:58:16 mcooper
- * Change "verbose" to "Show".
- *
- * Revision 1.24 1992/03/31 03:10:17 mcooper
- * Put frontend macro around CheckNlist() to avoid
- * broken things in Ultrix.
- *
- * Revision 1.23 1992/03/31 00:34:59 mcooper
- * Add new GetNlName() and GetNlNamePtr() macros.
- *
- * Revision 1.22 1992/03/31 00:15:55 mcooper
- * Make GetNlName() global.
- *
- * Revision 1.21 1992/03/28 22:01:16 mcooper
- * Add dd_slave to DEVDATA.
- *
- * Revision 1.20 1992/03/25 03:31:28 mcooper
- * Fix verbose flags.
- *
- * Revision 1.19 1992/03/25 03:18:52 mcooper
- * Convert verbosity levels to bit flags.
- *
- * Revision 1.18 1992/03/22 00:54:53 mcooper
- * Add GetNlName().
- *
- * Revision 1.17 1992/03/22 00:20:10 mcooper
- * Major cleanup and re-org.
- *
- * Revision 1.16 1992/03/08 05:00:40 mcooper
- * Remove obsolete NETIFTAB.
- *
- * Revision 1.15 1992/03/08 04:55:42 mcooper
- * Add support for address families and multiple addresses
- * per network interface.
- *
- * Revision 1.14 1992/03/06 18:36:06 mcooper
- * Add new NAMETAB to replace other similiar types.
- *
- * Revision 1.13 1992/03/03 03:18:59 mcooper
- * Seperate and cleanup KVM*() from kvm*().
- *
- * Revision 1.12 1992/03/01 23:29:19 mcooper
- * Move kvm_t to kvm.h.
- *
- * Revision 1.11 1992/03/01 22:51:02 mcooper
- * Add kvm_t structure.
- *
- * Revision 1.10 1992/03/01 21:34:07 mcooper
- * Put #ifdef HAVE_KVM around KVM_*() function declarations.
- *
- * Revision 1.9 1992/03/01 21:30:18 mcooper
- * Add dd_secsize to DISKDRIVE and add new MODELTAB.
- *
- * Revision 1.8 1992/02/27 22:01:22 mcooper
- * Add support for getting CPU info for sun4m.
- *
- * Revision 1.7 1992/02/27 02:42:33 mcooper
- * Cleanup.
- *
- * Revision 1.6 1992/02/25 00:59:35 mcooper
- * Move tape info to local MTINFO.
- *
- * Revision 1.5 1992/02/25 00:15:56 mcooper
- * Update DT_* and other misc.
- *
- * Revision 1.4 1992/02/22 02:20:19 mcooper
- * Major changes to support scanning kernel mainbus and
- * openprom data for device's.
- *
- * Revision 1.3 1992/02/16 23:50:23 mcooper
- * Add verbosity level macros.
- *
- * Revision 1.2 1992/02/16 23:03:51 mcooper
- * Declare extern verbose.
- *
- * Revision 1.1 1992/02/16 22:53:52 mcooper
- * Initial revision
- *
- */
-
- #ifndef __sysinfo_defs__
- #define __sysinfo_defs__
-
- /* Need to include options.h before errno.h */
- #include "options.h"
- #include <errno.h>
- #include "patchlevel.h"
-
- /*
- * Version of this program
- */
- #define VERSION_STR "1.0"
-
- #if defined(NEED_KVM)
- #include "kvm.h"
- #else
- #if defined(HAVE_KVM)
- #include <kvm.h>
- #endif /* HAVE_KVM */
- #endif /* NEED_KVM */
-
- /*
- * File containing our CPU model name. Overrides all other methods
- * for determing model name.
- */
- #ifndef MODELFILE
- #define MODELFILE "/etc/sysmodel"
- #endif
-
- /*
- * System call failure value
- */
- #ifndef SYSFAIL
- #define SYSFAIL -1
- #endif
-
- #define C_NULL '\0'
-
- /*
- * System error numbers and message strings
- */
- extern int errno;
-
- #ifdef SYSERR
- #undef SYSERR
- #endif
-
- #if defined(HAVE_STRERROR)
- #define SYSERR strerror(errno)
- #else
- extern char *sys_errmsg[];
- #define SYSERR sys_errlist[errno]
- #endif /* HAVE_STRERROR */
-
- #ifndef MAXHOSTNAMLEN
- #define MAXHOSTNAMLEN 256
- #endif
-
- #define MBYTES 1048576 /* Megabytes */
-
- /*
- * Misc macros
- */
- #define EQ(a,b) (strcasecmp(a,b)==0)
- #define EQN(a,b,n) (strncasecmp(a,b,n)==0)
-
- /*
- * CheckNlist() breaks in a variety of ways on
- * various OS's.
- */
- #if !defined(BROKEN_NLIST_CHECK)
- #define CheckNlist(p) _CheckNlist(p)
- #else
- #define CheckNlist(p) 0
- #endif
-
- /*
- * Get nlist n_name
- */
- #if defined(__MACH__)
- #define GetNlName(n) (n.n_un.n_name)
- #define GetNlNamePtr(n) (n->n_un.n_name)
- #else
- #define GetNlName(n) (n.n_name)
- #define GetNlNamePtr(n) (n->n_name)
- #endif /* __MACH__ */
-
- /*
- * Conversion macros
- */
- #define bytes_to_mbytes(n) ((float) n / (float) 1048576)
- #define bytes_to_kbytes(n) ((u_long)(n / 1024))
- #define mbytes_to_bytes(n) ((u_long)((u_long) n * 1048576))
- #define kbytes_to_mbytes(n) ((u_long)((u_long) n * 1024))
- #define nsect_to_bytes(n,s) ((((float) n) / (float) (1024 / s)) * 1024)
-
- /*
- * Are flags f set in b?
- */
- #define FLAGS_ON(b,f) ((b != 0) && (b & f))
-
- /*
- * Verbosity levels
- */
- #define L_BRIEF 0x01 /* Briefest */
- #define L_GENERAL 0x02 /* General verbosity */
- #define L_DESC 0x04 /* Description info */
- #define L_CONFIG 0x10 /* Configuratin info */
- #define L_DEBUG 0x20 /* Debug info */
- #define L_ALL (L_BRIEF|L_GENERAL|L_DESC|L_CONFIG)
- /*
- * Verbosity macros
- */
- #define VL_BRIEF (Level & L_BRIEF)
- #define VL_GENERAL (Level & L_GENERAL)
- #define VL_DESC (Level & L_DESC)
- #define VL_CONFIG (Level & L_CONFIG)
- #define VL_ALL (Level == L_ALL)
- #define VL_DEBUG (Level & L_DEBUG)
-
- /*
- * Show info
- */
- struct ShowInfo {
- int Type;
- char *Name;
- char *Label;
- void (*ShowFunc)();
- char *(*GetFunc)();
- int *OptCompat;
- int Enable;
- };
- typedef struct ShowInfo SHOWINFO;
-
- /*
- * ShowInfo types (ShowInfo.Type)
- */
- #define S_GEN 1 /* General info */
- #define S_DEV 2 /* Device info */
-
- /*
- * Main Device information
- *
- * Used after device info has been obtained
- */
- struct _device {
- char *dv_name; /* Name (e.g. cgtwo0) */
- char **dv_files; /* Device files */
- int dv_type; /* Device type (eg DT_TAPE) */
- char *dv_model; /* Model */
- char *dv_desc; /* Description */
- int dv_unit; /* Unit number */
- int dv_addr; /* Address */
- int dv_prio; /* Priority */
- int dv_vec; /* Vector */
- char *dv_mastername; /* Name of master */
- caddr_t *dv_devspec; /* Device specific info */
- struct _device *dv_master; /* Device controller */
- struct _device *dv_slaves; /* Devices on this device */
- struct _device *dv_nxt; /* Pointer to next device */
- };
- typedef struct _device DEVICE;
-
- /*
- * Device types (DEVICE.dv_type)
- */
- #define DT_GENERIC 1 /* Generic Device */
- #define DT_DISKDRIVE 2 /* Disk Drive */
- #define DT_DISKCTLR 3 /* Disk Controller */
- #define DT_TAPEDRIVE 4 /* Tape Drive */
- #define DT_TAPECTLR 5 /* Tape Controller */
- #define DT_FRAMEBUFFER 6 /* Frame Buffer */
- #define DT_NETIF 7 /* Network Interface */
- #define DT_BUS 9 /* System Bus */
- #define DT_PSEUDO 10 /* Pseudo Device */
- #define DT_CPU 11 /* CPU */
-
- /*
- * Disk Partition information.
- */
- struct _dkpart {
- char *dp_name; /* Partition name */
- char *dp_mnt; /* Mount information */
- int dp_stsect; /* Starting sector */
- int dp_nsect; /* Number of sectors */
- struct _dkpart *dp_nxt; /* Pointer to next DISKPART */
- };
- typedef struct _dkpart DISKPART;
-
- /*
- * Disk Drive specific data
- */
- struct _dkdrive {
- char *dd_label; /* Disk label */
- int dd_unit; /* Unit number */
- int dd_slave; /* Slave number */
- int dd_dcyl; /* # data cylinders */
- int dd_pcyl; /* # physical cylinders */
- int dd_acyl; /* # alternate cylinders */
- int dd_heads; /* Number of heads */
- int dd_sect; /* Number of sectors */
- int dd_psect; /* Number of physical sector */
- int dd_promrev; /* PROM Revision */
- int dd_apc; /* Alternates / Cyl (SCSI) */
- int dd_rpm; /* Revolutions Per Minute */
- int dd_intrlv; /* Interleave factor */
- int dd_secsize; /* Size of Sector (bytes) */
- u_long dd_size; /* Size of disk in bytes */
- int dd_flags; /* Info flags */
- DEVICE *dd_ctlr; /* Controller disk is on */
- struct _dkpart *dd_part; /* Partition information */
- struct _dkdrive *dd_nxt; /* Pointer to next disk */
- };
- typedef struct _dkdrive DISKDRIVE;
-
- /*
- * Disk Flags (DISKDRIVE.dd_flags)
- */
- #define DF_HEXUNIT 0x01 /* Unit is prt 3 hex digits */
-
- /*
- * Generic Name/Value table
- */
- struct _nametab {
- int value; /* Value field */
- char *name; /* Corresponding name */
- char *valuestr; /* Value string field */
- };
- typedef struct _nametab NAMETAB;
-
- /*
- * Disk Controller Table
- */
- struct dkctlrtab {
- u_short ct_ctype; /* Ctlr type index */
- char *ct_model; /* Ctlr model name */
- int ct_rdcmd; /* Read command flag */
- };
- typedef struct dkctlrtab DKCTLRTAB;
-
- /*
- * FrameBuffer specific data
- */
- struct _framebuffer {
- int fb_height; /* Height (in pixels) */
- int fb_width; /* Width (in pixels) */
- int fb_depth; /* Depth (bits/pixel) */
- u_long fb_size; /* Total size (in bytes) */
- u_long fb_vmsize; /* Video memory (in bytes) */
- int fb_cmsize; /* Color Map Size (#entries) */
- };
- typedef struct _framebuffer FRAMEBUFFER;
-
- /*
- * Network Interface specific data
- */
- struct _netif {
- char *ni_typename; /* Name of address type */
- char *ni_hostaddr; /* Host address */
- char *ni_hostname; /* Host name */
- char *ni_macaddr; /* MAC address */
- char *ni_macname; /* MAC name */
- char *ni_netaddr; /* Network address */
- char *ni_netname; /* Network name */
- struct _netif *ni_nxt; /* Pointer to next element */
- };
- typedef struct _netif NETIF;
-
- /*
- * Address family table
- */
- struct _aftab {
- int af_type; /* Type value */
- char *af_name; /* Name value */
- NETIF *(*af_getnetif)(); /* Function to get netif */
- };
- typedef struct _aftab AFTAB;
-
- /*
- * Table of devices
- */
- struct devicetab {
- int d_type; /* Device type */
- char **d_list; /* List of devices */
- DEVICE *(*d_query)(); /* Query function */
- };
-
- /*
- * Basic device data
- *
- * Used when searching for initial list of devices
- */
- struct _devdata {
- char *dd_devname; /* Name of device */
- int dd_devunit; /* Device specific unit # */
- int dd_slave; /* Slave number */
- char *dd_ctlrname; /* Name of Controller */
- int dd_ctlrunit; /* Controller # */
- int dd_flags; /* Device flags */
- };
- typedef struct _devdata DEVDATA;
-
- /*
- * Flags for DEVDATA.dd_flags
- */
- #define DD_MAYBE_ALIVE 0x1 /* Device may be alive */
- #define DD_IS_ALIVE 0x2 /* Device is alive */
-
- /*
- * Device Data Table structure
- */
- struct _devdatatab {
- char *ddt_name; /* Name of device */
- int ddt_type; /* Type of device */
- char *ddt_model; /* Model */
- char *ddt_desc; /* Description */
- DEVICE *(*ddt_probe)(); /* Probe device */
- };
- typedef struct _devdatatab DEVDATATAB;
-
- /*
- * Declarations
- */
- extern int DoPrintUnknown;
- extern int Debug;
- extern int Level;
-
- char *index();
- char *rindex();
- char *strdup();
- char *strcat();
- char *strtok();
-
- char *itoa();
- char *xmalloc();
- char *xcalloc();
-
- extern DEVDATATAB *GetDevDataTab();
- extern DEVICE *NewDevice();
- extern DEVICE *ProbeCPU();
- extern DEVICE *ProbeDiskDrive();
- extern DEVICE *ProbeFrameBuffer();
- extern DEVICE *ProbeGeneric();
- extern DEVICE *ProbeNetif();
- extern DEVICE *ProbeTapeDrive();
- extern DEVICE *MkMasterFromDevData();
- extern DEVICE *ProbeDevice();
- extern DEVICE *ProbeUnknown();
- extern DISKDRIVE *NewDiskDrive();
- extern DISKPART *NewDiskPart();
- extern FRAMEBUFFER *NewFrameBuffer();
- extern NETIF *NewNetif();
- extern char *GetHostName();
- extern char *GetKernArch();
- extern char *GetKernArchName();
- extern char *GetKernelVersionFromVersion();
- extern char *GetKernelVersionStr();
- extern char *GetModelName();
- extern char *GetNameTabName();
- extern char *GetOSNameStr();
- extern char *GetOSVersionStr();
- extern char *GetSerialNoStr();
- extern char *MkDevName();
- extern char *RunCmds();
- extern char *RunTestFiles();
- extern char *GetAppArchFromHostInfo();
- extern char *GetCpuTypeFromHostInfo();
- extern char *GetKernArchFromHostInfo();
- extern char *GetKernelVersionFromHostInfo();
- extern char *GetMemoryFromHostInfo();
- extern char *GetMemoryFromPhysmem();
- extern char *GetModelFromHostInfo();
- extern char *GetOSNameFromUname();
- extern char *GetOSVersionFromHostInfo();
- extern char *GetOSVersionFromKernVer();
- extern char *GetOSVersionFromUname();
- extern char *MkDevName();
- extern char *GetAppArch();
- extern char *GetCPU();
- extern char *GetCharFile();
- extern char *GetHostAddrs();
- extern char *GetHostAliases();
- extern char *GetHostID();
- extern char *GetKernelVersion();
- extern char *GetMan();
- extern char *GetMemory();
- extern char *GetModel();
- extern char *GetOSName();
- extern char *GetOSVersion();
- extern char *GetRawFile();
- extern char *GetRomVer();
- extern char *GetSerialNo();
- extern int AddDevice();
- extern void Error();
- extern void ShowDevices();
- extern void ShowGeneral();
-
- #if defined(HAVE_KVM)
- extern kvm_t *KVM_open();
- extern void KVM_close();
- extern int KVM_read();
- #endif /* HAVE_KVM */
-
- #endif /* __sysinfo_defs__ */
-