ftp.nice.ch/pub/next/unix/admin/sysinfo.1.1.0.s.tar.gz#/defs.h

This is defs.h in view mode; [Download] [Up]

/*
 * 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.39 1992/12/12 23:48:21 mcooper Exp mcooper $
 *
 * $Log: defs.h,v $
 * Revision 1.39  1992/12/12  23:48:21  mcooper
 * Add DDT_NOUNIT.
 *
 * Revision 1.38  1992/12/02  05:02:32  mcooper
 * Move ddt_type to make DEVDATATAB easier to structure.
 *
 * Revision 1.37  1992/11/30  01:16:02  mcooper
 * Replace dv_desc[23] by dv_desclist.
 *
 * Revision 1.36  1992/11/24  04:12:39  mcooper
 * Update KVM declarations.
 *
 * Revision 1.35  1992/11/24  02:03:05  mcooper
 * Move version info to version.h.
 *
 * Revision 1.34  1992/11/23  23:23:34  mcooper
 * Add define of KBYTES.
 *
 * Revision 1.33  1992/11/21  04:33:11  mcooper
 * Add dv_desc[23] fields for more description information.
 *
 * Revision 1.32  1992/08/13  04:48:09  mcooper
 * Add DT_NONE.
 *
 * Revision 1.31  1992/07/31  21:09:35  mcooper
 * Add support for doing GetDevDataTab() compares optionally
 * by length using the DDT_LENCMP flag in DEVDATATAB.
 *
 * 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 "version.h"

#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 */
#define KBYTES			1024			/* Kilobytes */

/*
 * 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 */
    char	       **dv_desclist;		/* Description List */
    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_NONE			 1		/* Sort of ignore */
#define DT_GENERIC		 2		/* Generic Device */
#define DT_DISKDRIVE		 3		/* Disk Drive */
#define DT_DISKCTLR		 4		/* Disk Controller */
#define DT_TAPEDRIVE		 5		/* Tape Drive */
#define DT_TAPECTLR		 6		/* Tape Controller */
#define DT_FRAMEBUFFER		 7		/* Frame Buffer */
#define DT_NETIF		 8		/* Network Interface */
#define DT_BUS			 9		/* System Bus */
#define DT_PSEUDO		10		/* Pseudo Device */
#define DT_CPU			11		/* CPU */
#define DT_MEMORY		12		/* Memory */

/*
 * 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 */
    char		*ddt_model;		/* Model */
    char		*ddt_desc;		/* Description */
    DEVICE	      *(*ddt_probe)();		/* Probe device */
    int			 ddt_type;		/* Type of device */
    int			 ddt_flags;		/* Flags */
};
typedef struct _devdatatab DEVDATATAB;

/*
 * Flags for DEVDATATAB.ddt_flags
 */
#define DDT_LENCMP	0x1			/* Compare by length */
#define DDT_NOUNIT	0x2			/* No unit number */

/*
 * 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 		       *KVMopen();
extern void			KVMclose();
extern int			KVMread();
extern struct nlist	       *KVMnlist();
#endif	/* HAVE_KVM */

#endif /* __sysinfo_defs__ */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.