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.
- */
-
- #ifndef lint
- static char *RCSid = "$Header: /src/common/usc/bin/sysinfo/RCS/os-alliant.c,v 1.9 1992/04/26 23:32:06 mcooper Exp $";
- #endif
-
- /*
- * $Log: os-alliant.c,v $
- * Revision 1.9 1992/04/26 23:32:06 mcooper
- * Add Copyright notice
- *
- * Revision 1.8 1992/04/17 23:27:51 mcooper
- * Add support for ROM Version information (Sun only for now).
- *
- * Revision 1.7 1992/04/17 01:07:59 mcooper
- * More de-linting
- *
- * Revision 1.6 1992/04/15 02:04:16 mcooper
- * Change GetMemoryStr() to GetMemory().
- *
- * Revision 1.5 1992/03/31 19:00:15 mcooper
- * A working version.
- *
- * Revision 1.4 1992/03/31 02:22:03 mcooper
- * Fix failed return value from CheckNlist().
- *
- * Revision 1.3 1992/03/31 01:55:17 mcooper
- * Use new CheckNlist to check nlist success.
- *
- * Revision 1.2 1992/03/31 00:15:09 mcooper
- * Add error check for nlist.n_type.
- *
- * Revision 1.1 1992/03/01 23:28:16 mcooper
- * Initial revision
- *
- */
-
- /*
- * Alliant specific functions
- */
- #include <stdio.h>
- #include "system.h"
- #include "defs.h"
-
- #include <fcntl.h>
- #include <nlist.h>
-
- /*
- * All the wonderful global extern declarations
- */
- #if defined(HAVE_USERETC)
- struct bpb *useretc = (struct bpb *)USERETC;
- #endif /* HAVE_USERETC */
- #if defined(HAVE_MODELNUM)
- extern int modelnum;
- #endif /* HAVE_MODELNUM */
- #if defined(HAVE_MEMORYSIZE)
- extern int memorysize;
- #endif /* HAVE_MEMORYSIZE */
- #if defined(HAVE_SERIALNUM)
- extern int serialnum;
- #endif /* HAVE_SERIALNUM */
-
- /*
- * Lookup a model value (val) and returns it's name.
- */
- extern char *GetModelName()
- {
- register int i;
- register int Num = -1;
- extern NAMETAB ModelTab[];
-
- #if defined(HAVE_MODELNUM)
- /*
- * Alliant 2800's have an external variable
- * called "modelnum".
- */
- Num = modelnum;
- #endif /* HAVE_MODELNUM */
- #if defined(HAVE_USERETC)
- /*
- * Alliant FX/80's have an external variable
- * called "useretc".
- */
- Num = useretc->bp_model;
- #endif /* HAVE_USERETC */
-
- for (i = 0; ModelTab[i].name; ++i) {
- if (ModelTab[i].value == Num)
- return(ModelTab[i].name);
- }
-
- return((char *) NULL);
- }
-
- /*
- * Get amount of memory.
- */
- extern char *GetMemory()
- {
- static char Buf[BUFSIZ];
- int Amount = -1;
- #if defined(HAVE_LIB_SYSCFG)
- int mem, ip, ce, det, att;
-
- lib_syscfg(&mem, &ip, &ce, &det, &att);
- Amount = mem;
- #endif /* HAVE_LIB_SYSCFG */
- #if defined(HAVE_MEMORYSIZE)
- Amount = memorysize;
- #endif /* HAVE_MEMORYSIZE */
-
- if (Amount > 0) {
- (void) sprintf(Buf, "%d MB", Amount);
- return(Buf);
- } else
- return((char *) NULL);
- }
-
- /*
- * Get kernel version string from kernel.
- */
- extern char *GetKernelVersionStr()
- {
- extern struct nlist VersionInfoNL[];
- static char Version[BUFSIZ];
- static char VerName[BUFSIZ], VerDate[BUFSIZ];
- register char *p;
- kvm_t *kd;
-
- Version[0] = C_NULL;
-
- if (!(kd = KVM_open(VersionInfoNL))) {
- if (Debug) Error("GetKernelVersionStr() KVM_open failed.");
- return((char *) NULL);
- }
-
- /*
- * See if we got a valid entry
- */
- if (CheckNlist(&VersionInfoNL[0]) || CheckNlist(&VersionInfoNL[1]))
- return((char *) NULL);
-
- if (KVM_read(kd, VersionInfoNL[0].n_value, (char *) VerName,
- sizeof(VerName))) {
- if (Debug) Error("GetKernelVersionStr() KVM_read versionname failed.");
- return((char *) NULL);
- }
-
- if (KVM_read(kd, VersionInfoNL[1].n_value, (char *) VerDate,
- sizeof(VerDate))) {
- if (Debug) Error("GetKernelVersionStr() KVM_read versiondate failed.");
- return((char *) NULL);
- }
-
- if (kd)
- KVM_close(kd);
-
- /*
- * Zap trailing white space
- */
- p = VerName;
- p = p + strlen(VerName) - 1;
- while (*p == ' ') {
- *p = C_NULL;
- *--p;
- }
-
- (void) sprintf(Version, "%s: %s", VerName, VerDate);
-
- return(Version);
- }
-
- /*
- * Get system serial number.
- */
- extern char *GetSerialNoStr()
- {
- #if defined(HAVE_SERIALNUM)
- /*
- * Use global variable "serialnum"
- */
- return(itoa(serialnum));
- #endif /* HAVE_SERIALNUM */
- #if defined(HAVE_USERETC)
- /*
- * Use global variable "useretc"
- */
- return(itoa(useretc->bp_serialnum));
- #endif /* HAVE_USERETC */
- }
-
- /*
- * Get OS Version string
- */
- extern char *GetOSVersionStr()
- {
- return(GetOSVersionFromKernVer());
- }
-
- /*
- * Get ROM Version
- */
- extern char *GetRomVer()
- {
- /* No support */
- return((char *) NULL);
- }
-