.\" 
.TH mcsysinfoc 3 "27 December 2001"
.ds ]W www.MagniComp.com
.SH NAME
mcsysinfoc \- MagniComp(tm) SysInfo(tm) C API to obtain detailed system information in a platform neutral manner
.SH SYNOPSIS
cc -I\fI/opt/sysinfo/include\fR [ options ] \fIfile\fR [ ... ] -L/opt/sysinfo/lib/platform/\fIname\fR -lmcsysinfo
.br
.sp
#include <mcsysinfo.h>
.sp
MCSIquery_t Query;
.sp
.br
Query.Op = \fBMCSIOP_PROGRAM\fR;
.br
Query.In = \fI"ProgramName"\fR;
.br
Query.InSize = strlen((char *)Query.In);
.br
int mcSysInfo(&Query);
.sp
.sp
McsiOpt_t Opt;
.sp
.br
Opt->Flags = \fIFlags\fR;
.br
Query.Op = \fBMCSIOP_SETOPTS\fR;
.br
Query.In = \fBOpt\fR;
.br
Query.InSize = sizeof(McsiOpt_t);
.br
int mcSysInfo(&Query);
.sp
.br
.sp
.br
Query.Op = \fBMCSIOP_CREATE\fR;
.br
Query.Cmd = \fIMCCMD\fR;
.br
int mcSysInfo(&Query);
.sp
.br
Query.Op = \fBMCSIOP_DESTROY\fR;
.br
int mcSysInfo(&Query);
.SH DESCRIPTION
The 
.B mcSysInfo() 
installed hardware, software,
disk partitioning, system configuration, and
kernel parameters.
.PP
The
.B mcsysinfoperl(3)
.B perl(1)
object API may also be used if
a 
.B perl(1)
interface is required.
.PP
The MagniComp
.B sysinfo(1)
command uses the
.B mcsysinfo(3)
API to obtain system configuration data and present it in human and
machine readable formats.
.PP
The 
.B Query.Op
parameter controls the basic operation performed by
.B mcSysInfo().
The following values are supported:
.RS
.IP MCSIOP_PROGRAM
When
.B Query.Op
is set to
.B MCSIOP_PROGRAM
then
.B Query.In
should point at a string naming the calling program
and
.B Query.InSize
should be set to the size of 
.B Query.In
in bytes.
This name is used by 
.B mcSysInfo()
when displaying error and debug messages.
.IP MCSIOP_SETOPTS
When
.B Query.Op
is set to
.B MCSIOP_SETOPTS
then
.B Query.In
should be a pointer to a
.B McsiOpt_t
buffer
and
indicated by
.B Query.Out.
.IP MCSIOP_DESTROY
When
.B Query.Op
is set to
.B MCSIOP_DESTROY,
the data located at the address indicated by
.B Query.Out
is destroyed (unallocated).
.RE
.PP
The
.I Query
is defined as follows:
.sp
.nf
.RS
/*
 * Query type for mcSysInfo() calls
 */
typedef struct {
    /* Caller's Input */
    int         Op;         /* MCSIOP_* operator */
    int         Cmd;        /* MCSI_* command to perform */
    uint_t      Flags;      /* Option Flags */
    char      **SearchExp;  /* Search Expression */
    Opaque_t    In;         /* Ptr to Input */
    size_t      InSize;     /* Size of In */
    /* Results */
    Opaque_t    Out;        /* Ptr to Output */
    size_t      OutSize;    /* Size of Out */
} MCSIquery_t;
.RE
.fi
.sp
.PP
The members of
.B MCSIquery_t
are defined as follows:
.IP Op
Specifies what operation to perform on
.I Cmd.
Valid values are as follows:
.RS
.IP MCSIOP_CREATE
(Default)
Obtain the data requested by
.I Cmd
and return the result in the
.I Out
and
.I Out.
.RE
.IP Cmd
Specifies which command to perform.  See below for the valid list of commands.
.IP Flags
.I Flags
is a set of bit flags which enable different options as specified by 
the
following values:
.RS
.IP MCSIF_DATA
(Default)
This option causes data to be returned to the
.I Out
buffer in the form requiring the least amount of additional parsing by
the calling function as possible.
The actual form varies according to the
.I Cmd
that was specified.
.IP MCSIF_STRING
This option causes data to be returned in string form readying for human
display whenever possible.
This option is only available for specific
.I Cmd
values as specified below.
.RE
.IP SearchExp
An array of strings to use to limit the data returned in
.I Out.
Only the following commands support this option:
.RS
.IP MCSI_DEVTREE
Used to specify a list of names which are checked against the device's
.I Name,
.I Aliases,
and
.I AltName
values.
.I 
.RE
.IP In
Used to provide input to certain operations such as MCSIOP_PROGRAM.
.IP InSize
Size of 
.I In
in bytes.
.IP Out
All data is returned in an allocated buffer at the location specified by
the 
.I Out
parameter
The contents of the buffer
is guaranteed to always be greater than zero when the call succeeds and
.I Out
points to a valid buffer.
See below for more details.
.PP
The valid values for
.I Cmd
are as follows:
.RS
.IP MCSI_HOSTNAME
Obtain the system's canonical hostname.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "sunworld".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_HOSTALIASES
Obtain a list of host aliases for the local host.
These are obtained via the
.B gethostbyname(3)
call from the 
.B h_aliases
parameter of 
.B struct hostent.
.RS
.IP \fIOut\fR
When
.B MCSIF_DATA
is set in
.I Flags
(the default)
.I Out
is a pointer to a 
.I "char **"
array of aliases.
The last entry in this array will always be NULL.
When
.B MCSIF_STRING
is set in
.I Flags
.I Out
is a pointer to a 
.I "char *"
string which contains a space seperated list of aliases.
e.g. "fred fred2 fred3".

.I OutSize
indicates the length of the buffer.
.RE
.IP MCSI_HOSTADDRS
Obtain a list of the local hosts IP addresses.
.RS
.IP \fIOut\fR
When
.B MCSIF_DATA
is set in
.I Flags
(the default)
.I Out
is a pointer to a 
.I "char **"
array of IP addresses.
The last entry in this array will always be NULL.
When
.B MCSIF_STRING
is set in
.I Flags
.I Out
is a pointer to a 
.I "char *"
string which contains a space seperated list of IP addresses.
e.g. "129.152.1.1 129.152.20.1 192.5.5.44".

.IP \fIOutSize\fR
When
.B MCSIF_DATA
is set in
.I Flags
(the default)
.I OutSize
indicates the number of entries in the array located at the
.I Out
location.
When
.B MCSIF_STRING
is set in
.I Flags
.I OutSize
indicates the length of the buffer.
.RE
.IP MCSI_HOSTID
Obtain the host identifier.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "8025asf3".
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_MANSHORT
Obtain the short name of the host's manufacturer.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "Sun".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_MANLONG
Obtain the long name of the host's manufacturer.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "Sun Microsystems, Inc."
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_MAN
Obtain the combined short and long name of the host's manufacturer.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "Sun (Sun Microsystems, Inc.)".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_MODEL
Obtain the host's model name.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "Ultra 10 Model 300".
.IP \fIOutSize\fR
.I Out
buffer.
.RE
.IP MCSI_CPUTYPE
Obtain the type of CPU used in the system (e.g. SPARCv9, Pentium, etc.).
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "sparcv9+vis".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_APPARCH
Obtain the application architecture of the system (e.g. SPARC, x86, etc.).
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "sparc".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_KERNARCH
Obtain the kernel architecture of the system (e.g. sun4u, sun4m, etc.).
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "sun4u".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_KERNBITS
Obtain the kernel bit size of the system (e.g. 32, 64)
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g. "32".
.IP \fIOutSize\fR
Indicates the length of the
buffer.
.RE
.IP MCSI_OSVER
Obtain the version of the operating system (e.g. 5.6, 4.2.1, etc.).
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_OSDIST
Obtain the distribution name of the operating system (e.g. Solaris 2.6 5/98,
S.u.S.e. 6.1, etc.).
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_KERNVER
Obtain the version of the kernel which is installed (e.g. SunOS Release 5.6 Version Generic_105182-05 [UNIX(R) System V Release 4.0])
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
.IP MCSI_BOOTTIME
Obtain the time that the system was last booted.
.RS
.IP \fIOut\fR
Points at a 
.I "char *"
buffer.
e.g "Sat Jun 19 11:55:41 1999".
.IP \fIOutSize\fR
Indicates the length of the
.I Out
buffer.
.RE
Obtain a list, 
possible in a hierarchical tree, 
of physical (hardware) devices present on the system.
.RS
.IP \fIOut\fR
Pointer to a 
.I "DevInfo_t"
buffer.
See
.B "DevInfo_t" 
below for details.
.IP \fIOutSize\fR
Is 1 or more if 
.I Out
contains valid data.
.RE
.IP MCSI_KERNELVAR
Obtain a list of kernel variables, their description, and their values as
presently configured.
.RS
.IP \fIOut\fR
Points at a linked list of type
.I "Define_t"
which contains data as follows:
.RS
.IP KeyStr
The name of the kernel variable.
.IP ValStr1
The type of variable this is (boolean, int, long, string).
.IP ValStr2
Descriptive text of what this variable is for.
.IP ValStr3
The value obtained from the kernel.
The value is NULL if the information was not available from the
kernel.
.RE

.IP \fIOutSize\fR
.IP \fIOutSize\fR
The number of valid entries in the linked list at location
.I Out.
.RE
.IP MCSI_SYSCONF
Obtain a list of system configuration values via the
.I sysconf(3)
interface.
.RS
.IP \fIOut\fR
Points at a linked list of type
.I "Define_t"
which contains data as follows:
.RS

.IP \fIOutSize\fR
The number of valid entries in the linked list at location
.I Out.
.RE
.IP MCSI_SOFTINFO
Obtain a list, possible in a hierarchical tree, 
of software and software packages which are installed on
the system.
.RS
.IP \fIOut\fR
Pointer to a
.I "SoftInfo_t"
buffer.
See
.B "SoftInfo_t" 
below for details.
.IP \fIOutSize\fR
Is 1 or more if 
.I Out
contains valid data.
.RE
.IP MCSI_PARTITION
Obtain a list, possible in a hierarchical tree, 
of disk partitions defined on this system.
.RS
.IP \fIOut\fR
Pointer to a
.I "PartInfo_t"
buffer.
See
.B "PartInfo_t" 
below for details.
.IP \fIOutSize\fR
Is 1 or more if 
.I Out
contains valid data.
.RE
.SH "DevInfo_t"
The primary device information data type is
.I DevInfo_t
which is defined as:
.sp
.nf
.RS
struct _DevInfo {
    char              *Name;       /* Name (e.g. cgtwo0) */
    char              *Driver;     /* Driver Name (e.g. cgtwo) */
    char             **Aliases;    /* Alias Names */
    char              *AltName;    /* Alt name */
    char             **Files;      /* Device files */
    int                Type;       /* Device type (eg DT_TAPE) */
    struct _DevInfo   *Slaves;     /* Devices on this device */
    struct _DevInfo   *Next;       /* Pointer to next device */
    /* Internal use only */
    void              *OSdata;     /* Data from OS */
    /* Obsolete */
    int                Addr;       /* Address */
    int                Prio;       /* Priority */
    int                Vec;        /* Vector */
};
typedef struct _DevInfo DevInfo_t;
.RE
.fi
.sp
.PP
The members of
.I DevInfo_t
are defined as follows:
.IP Name
The devices name, inclusive of it's unit number.  e.g. 
.B sd0.
If the device name ends in a digit, then the slash ('/')
character followed by the unit number is appended
to clarify the name.  e.g. 
.B pgx32/0
.IP Driver
The name of the device driver for this device.  This is typically, but
not always, the value of
.I Name
without the unit.
e.g. For a device with a
.I Name
of
.B sd0
the value of
.I Driver
would be 
.B sd
.IP Aliases
An array of alternate values for
.I Names
by which this device may be addressed.
e.g. A device with
.I Name
of 
.B dwis0
might have an alias such
as
.B pci1001,2003 .
.IP AltName
This member is depreciated by the
.I Aliases
member.
e.g. A SCSI disk device would have a 
.I Type
of 
.B DT_DISK
and a
.I ClassType
value of
.B CT_SCSI .
.IP Vendor
The name of the vendor who sold or manufactured this device.
.IP Model
The model name of the device.
.IP ModelDesc
A further description of the model which varies by device and
operating system.
.IP Serial
The devices serial number.
.IP Capacity
A string containing the capacity (size) of a device in device specific units.
For a 
.B DT_DISKDRIVE
this will typically be a something like
.B "32 GB".
.IP Speed
A string containing the speed of a device in device specific units.
For a
.B DT_DISKDRIVE
this might be
.B "33 MB/s".
For a
.B DT_PROCESSOR
the speed would indicate the clock speed such as
.B "850 MHz".
.IP Revision
The revision of the device.
.IP DescList
A list of descriptive information that is not otherwise specified in 
.I DevInfo_t.
This list varies greatly by operating system and specific hardware platforms
and models.
There is no guarentee that the 
.I DescList
information will remain constant from model to model, even on the same
version of an operating system.
.IP Unit
The device's unit number.  This is usually, but not always, the physically
assigned unit number of the device.
.IP NodeID
Some operating systems and hardware platforms
(e.g. Solaris+SPARC+OpenBootProm) 
assign devices soft, unique identifiers for tracking
purposes inside the kernel.
A pointer to any sibling devices which all belong to the same
.I Master.
.IP DevSpec
The address to a buffer containing information specific to the device
.I Type .
The following device
.I Type
values normally provide data via
.I DevSpec :
.RS
.IP DT_CPU
Pointer to a
.I CpuInfo_t
entry (see below).
.IP DT_DISK
Pointer to a 
.I DiskDrive_t
entry.
.IP DT_FRAMEBUFFER
Pointer to a 
.I FrameBuffer_t
entry.
.IP DT_NETIF
Pointer to a
.I NetIF_t
entry.
.IP DT_MONITOR
Pointer to a
.I Monitor_t
entry.
.RE
.IP Addr
This value is obsolete.
.IP Prio
This value is obsolete.
.IP Vec
This value is obsolete.
.SS "CpuInfo_t"
The
.I CpuInfo_t
type specifies CPU information.
It is usually available via
.I DevInfo_t.DevSpec
when
.I DevInfo_t.Type
is set to
.B DT_CPU.
The definetion of
.I CpuInfo_t
is:
.sp
.nf
    int				Stepping;	/* Stepping */
    Desc_t		       *Features;	/* List of features */
};
typedef struct _CpuInfo		CpuInfo_t;

.RE
.fi
.sp
.PP
The members of
.I CpuInfo_t
are defined as follows:
.IP Man
The name of the manufacturer of the CPU.
.IP Model
The model of CPU.
.IP Arch
The architecture of the CPU.
.IP ArchVer
The architecture version of the CPU.
.IP Serial
The serial number of the CPU.
.IP BitSize
The addressable bitsize of the CPU.
e.g.
.B 32
or
.B 64
.IP Speed
The clock speed of the CPU in mega-hertz.
.IP L1iCache
A
.I CacheInfo_t
entry describing the L1 instruction cache.
.IP L1dCache
A
.I CacheInfo_t
entry describing the L1 data cache.
.IP L2Cache
A
.I CacheInfo_t
entry describing the L2 cache.
.IP HasFPU
Boolean value indicating where the CPU has an onboard Floating Point Unit.
.IP Stepping
The CPU's stepping value.
.IP Features
A list of otherwise unstructured features supported by the CPU.
.SS "CacheInfo_t"
The
.I CacheInfo_t
type specifies CPU cache information.
    int				Enabled;	/* Is this cache enabled? */
    int				Type;		/* Type of Cache */
    int				Level;		/* Level=1, 2, ... */
    Large_t			Size;		/* Size (bytes) */
    int				Speed;		/* Speed (ns) */
    int				Assoc;		/* Associativity */
    int				Lines;		/* # Lines */
    int				LineSize;	/* Line Size (bytes)*/
    int				TLB;		/* # TLB Entries */
    int				TLBAssoc;	/* # TLB Associativity */
    int				Socketed;	/* Is cache socketed? */
    char		       *Location;	/* Location relative to CPU */
    char		       *SramType;	/* SRAM Type */
    char		       *EccType;	/* ECC Type */
    char		       *Mode;		/* Mode (Write Back/Through..*/
} CacheInfo_t;

.RE
.fi
.sp
.PP
The members of
.I CacheInfo_t
are defined as follows:
.IP Enabled
A boolean indicating whether the cache is enabled (\fB1\fR) or not (\fB0\fR).
.IP Type
An integer which 
specifies the type of cache.
The value should be one of the following:
.RS
.IP CACHE_TYPE_INST
Instruction cache
.IP CACHE_TYPE_DATA
Data cache
.IP CACHE_TYPE_UNIFIED
Unified cache
.RE
.IP Level
An integer which specifies the level of cache.
i.e. 
.B 1
is an L1 cache,
.B 2
is an L2 cache,
etc.
A value of 
.B 0
indicates an unknown level.
.IP Size
A 
.B Large_t
The number of TLB entries.
.IP TLBAssoc
The number of TLB associativity.
.IP Socketed
A value of 
.B 1
indicates the cache is socketed.
A value of
.B 0
indicates the cache is not socketed.
A value of
.B -1
indicates an unknown state.
.IP Location
A string describing the location of the cache.
.IP SramType
A string describing the SRAM type.
.IP EccType
A string describing the type of error correction used.
.IP Mode
A string describing the mode of cache.
i.e. 
.B "Write Back", 
etc.
.SH "SoftInfo_t"
The software information data type is
.I SoftInfo_t
which is defined as:
.sp
.nf
.RS
struct _SoftInfo {
    char	       *EntryType;	/* Entry Type MC_SET_*_S */
    int			EntryTypeNum;	/* Numeric EntryType */
    char	       *Name;		/* Name */
    char	       *Version;	/* Version */
    char	       *Revision;	/* Revision for this Version */
    char	       *Desc;		/* Description of software */
    char	       *DescVerbose;	/* Verbose Description */
    char	       *URL;	 	/* Product URL */
    char	       *License; 	/* Product License */
    char	       *Copyright; 	/* Product Copyright */
    char	       *Category;	/* Category pkg belongs to */
    char	       *SubCategory;	/* Sub Category */
    char	       *OSname;		/* OS name runs on */
    char	       *OSversion;	/* OS version runs on */
    char	       *Arch;		/* Architecture runs on */
    char	       *ISArch;		/* Instruct. Set Arch. */
    char	       *InstDate;	/* Installation Date */
    char	       *BuildDate;	/* Build Date */
    char	       *ProdStamp;	/* Production Stamp */
    char	       *BaseDir;	/* Base Dir for files */

.RE
.fi
.sp
.PP
The members of
.I SoftInfo_t
are defined below and except where noted, the string formats 
vary from OS to OS and package to package:
.IP EntryType
A string which indicates the type of entry this SoftInfo_t node represents.
Valid values are defined by the following constants:
.sp
.RS
.IP MC_SET_PKG_S
Package - this entry represents a collection of installed files/directories.
This is the lowest level 
.B EntryType.
.IP MC_SET_PROD_S
Product - this entry represents a collection of packages (MC_SET_PKG_S).
It normally acts as a parent node in a hierarchical tree of software 
packages and
usually does not include any attributes other than 
.B Slaves 
and 
.B Next .
.RE
.sp
.IP EntryTypeNum
The corresponding numeric value for 
.B EntryType.
The following constants are valid values:
.sp
.RS
.IP MC_SET_PKG
Numeric value for 
.B MC_SET_PKG_S.
.IP MC_SET_PROD
Numeric value for
.B MC_SET_PROD_S.
.RE
.sp
.IP Name
A string which describes the package (if 
.B EntryType
==
.B MC_SET_PKG )
or the product (if
.B EntryType
==
.B MC_SET_PROD ).
e.g. 
.B SUNWcsr
A verbose string, usually containing multiple lines (\\n), 
.B "The core files in this package are required by all other packages."
.IP URL
A Universal Resource Locatator (URL) for locating more information about
this package or product.
e.g.
.B http://www.sun.com/solaris
.IP License
A string naming or describing the licensing terms of this package or product.
e.g. 
.B "GPL"
or 
.B "Free to everyone with no restrictions"
.IP Copyright
A string naming or describing the copyright terms of this package or product.
The string may include embedded newline characters.
e.g. 
.B "(c)Copyright 1901-2101 Big Software Company"
.IP Category
A string describing the primary category this package or product belongs to.
e.g.
.B "system"
.IP SubCategory
A string describing the secondary category, often within 
.B Category,
that this package or product belongs to.
e.g.
.B openwindows
.IP OSname
A string containing the name of the operating system this package runs on.
e.g.
.B "Linux"
.IP OSversion
A string containing the version of the operating system this package runs on.
e.g.
.B "2.2.1"
.IP Arch
A string naming the CPU architecture which this package runs on.
e.g.
.B "x86"
.IP ISArch
A string naming the Instruction Set Architecture which this package runs on.
The ISA usually represents a more specific value than
.B Arch.
e.g.
.B "Pentium-III"
.IP InstDate
A string containing the date this package was installed.
e.g.
.B "Feb 02 1999 20:43"
.IP BuildDate
A string containing the date this package was built.
.IP DescList
A linked list of miscellaneous descriptions for any other information
which is not categorized.
.IP VendorName
The name of the vendor who created or distributes the package.
.IP VendorEmail
The vendor's email address.
.IP VendorPhone
The vendor's phone number.
.IP VendorStock
The vendor's stock number for this package.
.IP Master
The parent (master) node for this package in the SoftInfo_t tree.
.IP Slaves
The slave (child) nodes for this package.
.IP Next
The peer nodes in the SoftInfo_t tree.
.IP FileList
A list of files associated with this package.
See 
.B SoftFileList_t 
for more information.
.SH SoftFileList_t
The
.B SoftFileList_t
type defines software file information usually in a linked list.
It is defined as follows:
.sp
.nf
.RS
/*
 * Software File Data
 */
struct _SoftFileData {
    int			Type;		/* File, dir, symlink, etc */
    char	       *Path;		/* Path to file */
    char	       *LinkTo;		/* Link To what */
    Large_t		FileSize;	/* Size of file */
    char	       *MD5;		/* MD5 checksum */
    char	       *CheckSum;	/* Platform specific checksum */
    char	      **PkgNames;	/* List of used by Pkgs */
    struct _SoftFileData *Next;		/* Next entry */
};
typedef struct _SoftFileData SoftFileData_t;

/*
 * List of SoftFileData_t entries
 */
struct _SoftFileList {
    SoftFileData_t     *FileData;	/* Ptr to FileData entry */
    struct _SoftFileList *Next;		/* Next entry in our list */
};
#define SFT_BDEV	6		/* Device File */
#define SFT_BDEV_S	"Block-Device"

.RE
.fi
.sp
.PP
The list of files associated with a package is defined by the
.B SoftFileList_t
type.
The actual file data is defined in
.B SoftFileList_t->FileData.
.PP
The members of 
.B SoftFileData_t 
are defined as follows:
.IP Type
Indicates the type of file this is.
The valid values are defined by the following constants:
.RS
.IP \fBSFT_FILE\fR
A regular file.
.IP \fBSFT_HLINK\fR
A hard link.
.IP \fBSFT_SLINK\fR
A symbolic link.
.IP \fBSFT_DIR\fR
A directory.
.IP \fBSFT_CDEV\fR
A character special device file.
.IP \fBSFT_BDEV\fR
A block special device file.
.RE
.IP Path
The pathname of this entry.
e.g.
.B /bin/cp
.IP LinkTo
If 
.B Type
is 
.B SFT_HLINK
or
.B SFT_SLINK
then this variable names the path that
.B Path
is linked to.
.IP FileSize
The size of this file.
Usually only valid if
.B Type
is 
/*
 * Partition Information (CN_PARTITION)
 */
struct _PartInfo {
    char	       *Title;		/* Describes this entry */
    char	       *DevPath;	/* Dev Path e.g. /dev/dsk/c0t0s1 */
    char	       *DevPathRaw;	/* Raw Dev Path e.g. /dev/rdsk/c0t0s1 */
    char	       *DevName;	/* Dev Name e.g. c0t0 */
    char	       *BaseName;	/* c0t0s1 */
    char	       *Name;		/* Name e.g. s1 */
    int			Num;		/* Part # for this disk e.g. 1 */
    char	       *Type;		/* Type e.g. ufs */
    char	       *TypeDesc;	/* Description of Type */
    u_int		TypeNum;	/* Numeric value of Type if any */
    char	       *UsageStatus;	/* String value for Usage (below) */
    char	       *MntName;	/* Mount Name e.g. /usr */
    char	      **MntOpts;	/* Mount Options e.g. rw,quota */
    Large_t		Size;		/* Size of partition (MB) */
    Large_t		AmtUsed;	/* Amt of space currently used (MB)*/
    int			SecSize;	/* Size of 1 sector */
    Large_t		StartSect;	/* Starting Sector # */
    Large_t		EndSect;	/* Ending Sector # */
    Large_t		NumSect;	/* Number of Sectors (size) */
    /* Internal use only */
    int			Usage;		/* How used, one of PIU_* */
    struct _PartInfo   *Next;
};
typedef struct _PartInfo PartInfo_t;
.RE
.fi
.sp
The members of
.B PartInfo_t
are defined as follows:
.IP Title
A string which helps identify this entry.
.IP DevPath
A string which names the pathname of the 
(block) device which represents this
partition.
e.g.
.B /dev/dsk/c0t0d0s3
.IP DevPathRaw
A string which names the pathname of the raw (character) 
device which represents this
partition.
e.g.
.B /dev/rdsk/c0t0d0s3
.IP DevName
A string containing the kernel's name for this device.
e.g.
.B sd0
.IP Type
A short string, usually a single word, 
describing the type of partition this is.
e.g.
.B ufs
.IP TypeDesc
A more verbose description of the parititoin type.
e.g.
.B "Unix File System"
.IP TypeNum
The numeric type identifier of this partition as described by
.B Type
and 
.B TypeDesc.
.IP UsageStatus
A string containing information on how this partition is used.
e.g.
For a UFS filesystem this would contain a mount point such as
.B /usr
.IP MntName
The name of the mount point.
e.g.
.B /usr
.IP MntOpts
An array of strings containing the options used by the OS to mount this 
partition.
e.g. 
.B "rw" 
.B "quota" 
.B "logging"
.IP Size
The total size, in MB, of this partition.
.IP AmtUsed
The amount of space, in MB, this partition currently consumes.
.IP SecSize
The number of bytes in 1 sector (usually 512).
.IP StartSect
The location of the first, starting sector of this partition relative to the
entire disk.
.IP EndSect
The location of the last sector of this partition relative to the entire disk.
.IP NumSect
The number of sectors (\fBEndSect - StartSect\fR) this partition uses.
.SH "RETURN VALUES"
Upon successful completion, 
.B mcSysInfo() 
returns 0 and output data is
available in the buffer indicated by the
.I Out
parameter.
Upon error, 
.B mcSysInfo() 
.SH FILES
/opt/sysinfo/config 	\- Config files read at runtime
.SH "SEE ALSO"
sysinfo(1)
mcsysinfoperl(3)
.SH URL
http://www.MagniComp.com/sysinfo