more systemInfo (solaris only)
authorClaus Gittinger <cg@exept.de>
Wed, 31 Mar 1999 21:59:01 +0200
changeset 4084 797fd09b7808
parent 4083 0f0b6c99acf7
child 4085 0e67cf7e935b
more systemInfo (solaris only)
UnixOS.st
UnixOperatingSystem.st
--- a/UnixOS.st	Wed Mar 31 20:20:11 1999 +0200
+++ b/UnixOS.st	Wed Mar 31 21:59:01 1999 +0200
@@ -6062,52 +6062,58 @@
        This method is mainly provided to augment error reports with some system
        information. 
        (in case of system/version specific OS errors, conditional workarounds and patches
-	may be based upon this info).
+        may be based upon this info).
        Also, applications could enable/disable buffering or otherwise reduce
        their memory usage depending upon the amount of memory installed.
-       Your application should NOT depend upon this in any way.
+       Your application may make use of available information for tuning,
+       but should NEVER DEPEND upon this in any way.
 
      The returned info may (or may not) contain:
-	#system -> some operating system identification (irix, Linux, nt, win32s ...) 
-	#version -> OS version (some os version identification)
-	#release -> OS release (3.5, 1.2.1 ...)
-	#node   -> some host identification (hostname)
-	#domain  -> domain name (hosts domain)
-	#machine -> type of CPU (i586, mips ...)
+        #system -> some operating system identification (irix, Linux, nt, win32s ...) 
+        #version -> OS version (some os version identification)
+        #release -> OS release (3.5, 1.2.1 ...)
+        #node   -> some host identification (hostname)
+        #domain  -> domain name (hosts domain)
+        #machine -> type of CPU (i586, mips ...)
      
      those are currently returned on some machines (no warranty)
      linux:
-	#totalRam         -> total amount of memory available
-	#sharedRam        -> amount of memory which is shared among processes
-		             (i.e. shared code)
-	#bufferRam        -> amount used for buffers
-	#swapSize         -> total size of swap space
-	#freeSwap         -> free amount in swapSpace
+        #totalRam         -> total amount of memory available
+        #sharedRam        -> amount of memory which is shared among processes
+                             (i.e. shared code)
+        #bufferRam        -> amount used for buffers
+        #swapSize         -> total size of swap space
+        #freeSwap         -> free amount in swapSpace
 
      osf:
-	#physicalRam      -> total amount of physical memory
-	#cpuType          -> type of cpu (more detailed than machine)
-	#numberOfCPUs     -> number of cpus in box
+        #physicalRam      -> total amount of physical memory
+        #cpuType          -> type of cpu (more detailed than machine)
+        #numberOfCPUs     -> number of cpus in box
         
      solaris:
-	#physicalRam      -> total amount of physical memory
-	#numberOfCPUs     -> number of cpus in box
-	#dCacheSize       -> bytes in data cache
-	#iCacheSize       -> bytes in data cache
+        #physicalRam      -> total amount of physical memory
+        #availableRam     -> total available amount of physical memory (i.e. unused ram)
+        #freeRam          -> amount of free memory
+        #numberOfCPUs     -> number of cpus in box (online CPUS)
+        [#dCacheSize]     -> bytes in data cache (only available on some solaris versions)
+        [#iCacheSize]     -> bytes in data cache (only available on some solaris versions)
+        [#instructionSets]-> instruction sets available (only available on some solaris versions)
+        [#platform]       -> platform name (only available on some solaris versions)
 
      hpux:
-	#physicalRam      -> total amount of physical memory in box
-	#activeRealMemory -> ? - read pstat documentation
-	#activeVirtualRam -> ? - read pstat documentation
-	#freeMemory       -> ? - read pstat documentation
-	#realMemory       -> ? (amount of memory left to user programs)
-	#virtualRam       -> ? - read pstat documentation
+        #physicalRam      -> total amount of physical memory in box
+        #activeRealMemory -> ? - read pstat documentation
+        #activeVirtualRam -> ? - read pstat documentation
+        #freeMemory       -> ? - read pstat documentation
+        #realMemory       -> ? (amount of memory left to user programs)
+        #virtualRam       -> ? - read pstat documentation
     "
 
     |sys node rel ver mach dom mtyp brel info arch cpuType
-     physicalRam totalRam sharedRam bufferRam swapSize freeSwap
-     numberOfCPUs pageSize physicalPages dCacheSize iCacheSize
-     virtualRam activeVirtualRam realMemory activeRealMemory freeMemory|
+     physicalRam availableRam totalRam sharedRam bufferRam swapSize freeSwap
+     numberOfCPUs pageSize physicalPages availablePages dCacheSize iCacheSize
+     virtualRam activeVirtualRam realMemory activeRealMemory freeMemory
+     instructionSets platform|
 
 %{  /* STACK: 4096 */
 
@@ -6119,11 +6125,11 @@
     struct sysinfo infoBuffer;
 
     if (sysinfo(&infoBuffer) >= 0) {
-	totalRam   = __MKUINT(infoBuffer.totalram);
-	sharedRam = __MKUINT(infoBuffer.sharedram);
-	bufferRam = __MKUINT(infoBuffer.bufferram);
-	swapSize  = __MKUINT(infoBuffer.totalswap);
-	freeSwap  = __MKUINT(infoBuffer.freeswap);
+        totalRam   = __MKUINT(infoBuffer.totalram);
+        sharedRam = __MKUINT(infoBuffer.sharedram);
+        bufferRam = __MKUINT(infoBuffer.bufferram);
+        swapSize  = __MKUINT(infoBuffer.totalswap);
+        freeSwap  = __MKUINT(infoBuffer.freeswap);
     }
 # endif
 #endif /* LINUX */
@@ -6146,18 +6152,18 @@
 
 #if defined(HAS_UNAME)
     {
-	struct utsname ubuff;
-
-	if (uname(&ubuff) >= 0) {
-	    sys  = __MKSTRING(ubuff.sysname);
-	    node = __MKSTRING(ubuff.nodename);
-	    rel  = __MKSTRING(ubuff.release);
-	    ver  = __MKSTRING(ubuff.version);
-	    mach = __MKSTRING(ubuff.machine);
+        struct utsname ubuff;
+
+        if (uname(&ubuff) >= 0) {
+            sys  = __MKSTRING(ubuff.sysname);
+            node = __MKSTRING(ubuff.nodename);
+            rel  = __MKSTRING(ubuff.release);
+            ver  = __MKSTRING(ubuff.version);
+            mach = __MKSTRING(ubuff.machine);
 # ifdef HAS_UTS_DOMAINNAME
-	    dom  = __MKSTRING(ubuff.domainname);
+            dom  = __MKSTRING(ubuff.domainname);
 # endif /* no HAS_UTS_DOMAINNAME */
-	}
+        }
     }
 
 #else /* no UNAME */
@@ -6169,21 +6175,41 @@
 
 #if defined(HAS_SYSINFO) && defined(SI_ARCHITECTURE)
     if (arch == nil) {
-	char buffer[128];
-
-	if (sysinfo(SI_ARCHITECTURE, buffer, sizeof(buffer))) {
-	    arch = __MKSTRING(buffer);
-	}
+        char buffer[128];
+
+        if (sysinfo(SI_ARCHITECTURE, buffer, sizeof(buffer))) {
+            arch = __MKSTRING(buffer);
+        }
+    }
+#endif /* HAS_SYSINFO & SI_ARCHITECTURE */
+
+#if defined(HAS_SYSINFO) && defined(SI_ISALIST)
+    {
+        char buffer[128];
+
+        if (sysinfo(SI_ISALIST, buffer, sizeof(buffer))) {
+            instructionSets = __MKSTRING(buffer);
+        }
+    }
+#endif /* HAS_SYSINFO & SI_ARCHITECTURE */
+
+#if defined(HAS_SYSINFO) && defined(SI_PLATFORM)
+    {
+        char buffer[128];
+
+        if (sysinfo(SI_PLATFORM, buffer, sizeof(buffer))) {
+            platform = __MKSTRING(buffer);
+        }
     }
 #endif /* HAS_SYSINFO & SI_ARCHITECTURE */
 
 #if defined(HAS_GETDOMAINNAME)
     if (dom == nil) {
-	char buffer[128];
-
-	if (getdomainname(buffer, sizeof(buffer)) == 0) {
-	    dom = __MKSTRING(buffer);
-	}
+        char buffer[128];
+
+        if (getdomainname(buffer, sizeof(buffer)) == 0) {
+            dom = __MKSTRING(buffer);
+        }
     }
 #endif /* HAS_GETDOMAINNAME */
 
@@ -6191,46 +6217,62 @@
 
 # ifdef _SC_NPROCESSORS_ONLN
     {
-	long val;
+        long val;
  
-	val = sysconf(_SC_NPROCESSORS_ONLN);
-	if (val > 0) {
-	    numberOfCPUs = __MKINT(val);
-	}
-    }
-# endif
-# if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
+        val = sysconf(_SC_NPROCESSORS_ONLN);
+        if (val > 0) {
+            numberOfCPUs = __MKINT(val);
+        }
+    }
+# endif
+# if defined(_SC_PAGESIZE)
     {
-	long val;
-
-	val = sysconf(_SC_PHYS_PAGES);
-	if (val != -1) {
-	    physicalPages = __MKUINT(val);
-	    val = sysconf(_SC_PAGESIZE);
-	    if (val != -1) {
-		pageSize = __MKUINT(val);
-	    }
-	}
+        long val;
+
+        val = sysconf(_SC_PAGESIZE);
+        if (val != -1) {
+            pageSize = __MKUINT(val);
+        }
+    }
+# endif
+# if defined(_SC_PHYS_PAGES)
+    {
+        long val;
+
+        val = sysconf(_SC_PHYS_PAGES);
+        if (val != -1) {
+            physicalPages = __MKUINT(val);
+        }
+    }
+# endif
+# if defined(_SC_AVPHYS_PAGES)
+    {
+        long val;
+
+        val = sysconf(_SC_AVPHYS_PAGES);
+        if (val != -1) {
+            availablePages = __MKUINT(val);
+        }
     }
 # endif
 # if defined(_SC_ICACHE_SZ)
     {
-	long val;
-
-	val = sysconf(_SC_ICACHE_SZ);
-	if (val != -1) {
-	    iCacheSize = __MKUINT(val);
-	}
+        long val;
+
+        val = sysconf(_SC_ICACHE_SZ);
+        if (val != -1) {
+            iCacheSize = __MKUINT(val);
+        }
     }
 # endif
 # if defined(_SC_DCACHE_SZ)
     {
-	long val;
+        long val;
  
-	val = sysconf(_SC_DCACHE_SZ);
-	if (val != -1) {
-	    dCacheSize = __MKUINT(val);
-	}
+        val = sysconf(_SC_DCACHE_SZ);
+        if (val != -1) {
+            dCacheSize = __MKUINT(val);
+        }
     }
 # endif
 
@@ -6239,293 +6281,293 @@
 
 #if defined(HAS_GETSYSTEMINFO)
     {
-	INT index;
-	int retInt32 = 0;
+        INT index;
+        int retInt32 = 0;
 
 # if defined(GSI_CPU)
-	index = 0;
-	if (getsysinfo(GSI_CPU, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
-	    switch (retInt32) {
+        index = 0;
+        if (getsysinfo(GSI_CPU, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
+            switch (retInt32) {
 #  ifdef VAX_780
-		case VAX_780:
-		    cpuType = __MKSTRING("VAX_780");
-		    break;
+                case VAX_780:
+                    cpuType = __MKSTRING("VAX_780");
+                    break;
 #  endif
 #  ifdef VAX_750
-		case VAX_750:
-		    cpuType = __MKSTRING("VAX_750");
-		    break;
+                case VAX_750:
+                    cpuType = __MKSTRING("VAX_750");
+                    break;
 #  endif
 #  ifdef VAX_730
-		case VAX_730:
-		    cpuType = __MKSTRING("VAX_730");
-		    break;
+                case VAX_730:
+                    cpuType = __MKSTRING("VAX_730");
+                    break;
 #  endif
 #  ifdef VAX_8600
-		case VAX_8600:
-		    cpuType = __MKSTRING("VAX_8600");
-		    break;
+                case VAX_8600:
+                    cpuType = __MKSTRING("VAX_8600");
+                    break;
 #  endif
 #  ifdef VAX_8200
-		case VAX_8200:
-		    cpuType = __MKSTRING("VAX_8200");
-		    break;
+                case VAX_8200:
+                    cpuType = __MKSTRING("VAX_8200");
+                    break;
 #  endif
 #  ifdef VAX_8800
-		case VAX_8800:
-		    cpuType = __MKSTRING("VAX_8800");
-		    break;
+                case VAX_8800:
+                    cpuType = __MKSTRING("VAX_8800");
+                    break;
 #  endif
 #  ifdef MVAX_I
-		case MVAX_I:
-		    cpuType = __MKSTRING("MVAX_I");
-		    break;
+                case MVAX_I:
+                    cpuType = __MKSTRING("MVAX_I");
+                    break;
 #  endif
 #  ifdef MVAX_II
-		case MVAX_II:
-		    cpuType = __MKSTRING("MVAX_II");
-		    break;
+                case MVAX_II:
+                    cpuType = __MKSTRING("MVAX_II");
+                    break;
 #  endif
 #  ifdef V_VAX
-		case V_VAX:
-		    cpuType = __MKSTRING("V_VAX");
-		    break;
+                case V_VAX:
+                    cpuType = __MKSTRING("V_VAX");
+                    break;
 #  endif
 #  ifdef VAX_3600
-		case VAX_3600:
-		    cpuType = __MKSTRING("VAX_3600");
-		    break;
+                case VAX_3600:
+                    cpuType = __MKSTRING("VAX_3600");
+                    break;
 #  endif
 #  ifdef VAX_6200
-		case VAX_6200:
-		    cpuType = __MKSTRING("VAX_6200");
-		    break;
+                case VAX_6200:
+                    cpuType = __MKSTRING("VAX_6200");
+                    break;
 #  endif
 #  ifdef VAX_3400
-		case VAX_3400:
-		    cpuType = __MKSTRING("VAX_3400");
-		    break;
+                case VAX_3400:
+                    cpuType = __MKSTRING("VAX_3400");
+                    break;
 #  endif
 #  ifdef C_VAXSTAR
-		case C_VAXSTAR:
-		    cpuType = __MKSTRING("C_VAXSTAR");
-		    break;
+                case C_VAXSTAR:
+                    cpuType = __MKSTRING("C_VAXSTAR");
+                    break;
 #  endif
 #  ifdef VAX_60
-		case VAX_60:
-		    cpuType = __MKSTRING("VAX_60");
-		    break;
+                case VAX_60:
+                    cpuType = __MKSTRING("VAX_60");
+                    break;
 #  endif
 #  ifdef VAX_3900
-		case VAX_3900:
-		    cpuType = __MKSTRING("VAX_3900");
-		    break;
+                case VAX_3900:
+                    cpuType = __MKSTRING("VAX_3900");
+                    break;
 #  endif
 #  ifdef DS_3100
-		case DS_3100:
-		    cpuType = __MKSTRING("DS_3100");
-		    break;
+                case DS_3100:
+                    cpuType = __MKSTRING("DS_3100");
+                    break;
 #  endif
 #  ifdef VAX_8820
-		case VAX_8820:
-		    cpuType = __MKSTRING("VAX_8820");
-		    break;
+                case VAX_8820:
+                    cpuType = __MKSTRING("VAX_8820");
+                    break;
 #  endif
 #  ifdef DS_5400
-		case DS_5400:
-		    cpuType = __MKSTRING("DS_5400");
-		    break;
+                case DS_5400:
+                    cpuType = __MKSTRING("DS_5400");
+                    break;
 #  endif
 #  ifdef DS_5800
-		case DS_5800:
-		    cpuType = __MKSTRING("DS_5800");
-		    break;
+                case DS_5800:
+                    cpuType = __MKSTRING("DS_5800");
+                    break;
 #  endif
 #  ifdef DS_5000
-		case DS_5000:
-		    cpuType = __MKSTRING("DS_5000");
-		    break;
+                case DS_5000:
+                    cpuType = __MKSTRING("DS_5000");
+                    break;
 #  endif
 #  ifdef DS_CMAX
-		case DS_CMAX:
-		    cpuType = __MKSTRING("DS_CMAX");
-		    break;
+                case DS_CMAX:
+                    cpuType = __MKSTRING("DS_CMAX");
+                    break;
 #  endif
 #  ifdef VAX_6400
-		case VAX_6400:
-		    cpuType = __MKSTRING("VAX_6400");
-		    break;
+                case VAX_6400:
+                    cpuType = __MKSTRING("VAX_6400");
+                    break;
 #  endif
 #  ifdef VAXSTAR
-		case VAXSTAR:
-		    cpuType = __MKSTRING("VAXSTAR");
-		    break;
+                case VAXSTAR:
+                    cpuType = __MKSTRING("VAXSTAR");
+                    break;
 #  endif
 #  ifdef DS_5500
-		case DS_5500:
-		    cpuType = __MKSTRING("DS_5500");
-		    break;
+                case DS_5500:
+                    cpuType = __MKSTRING("DS_5500");
+                    break;
 #  endif
 #  ifdef DS_5100
-		case DS_5100:
-		    cpuType = __MKSTRING("DS_5100");
-		    break;
+                case DS_5100:
+                    cpuType = __MKSTRING("DS_5100");
+                    break;
 #  endif
 #  ifdef VAX_9000
-		case VAX_9000:
-		    cpuType = __MKSTRING("VAX_9000");
-		    break;
+                case VAX_9000:
+                    cpuType = __MKSTRING("VAX_9000");
+                    break;
 #  endif
 #  ifdef DS_500_100
-		case DS_500_100:
-		    cpuType = __MKSTRING("DS_500_100");
-		    break;
+                case DS_500_100:
+                    cpuType = __MKSTRING("DS_500_100");
+                    break;
 #  endif
 
 
 #  ifdef ALPHA_ADU
-		case ALPHA_ADU:
-		    cpuType = __MKSTRING("ALPHA_ADU");
-		    break;
+                case ALPHA_ADU:
+                    cpuType = __MKSTRING("ALPHA_ADU");
+                    break;
 #  endif
 #  ifdef DEC_4000
-		case DEC_4000:
-		    cpuType = __MKSTRING("DEC_4000");
-		    break;
+                case DEC_4000:
+                    cpuType = __MKSTRING("DEC_4000");
+                    break;
 #  endif
 #  ifdef DEC_3000_500
-		case DEC_3000_500:
-		    cpuType = __MKSTRING("DEC_3000_500");
-		    break;
+                case DEC_3000_500:
+                    cpuType = __MKSTRING("DEC_3000_500");
+                    break;
 #  endif
 #  ifdef DEC_7000
-		case DEC_7000:
-		    cpuType = __MKSTRING("DEC_7000");
-		    break;
+                case DEC_7000:
+                    cpuType = __MKSTRING("DEC_7000");
+                    break;
 #  endif
 #  ifdef DS_5000_300
-		case DS_5000_300:
-		    cpuType = __MKSTRING("DS_5000_300");
-		    break;
+                case DS_5000_300:
+                    cpuType = __MKSTRING("DS_5000_300");
+                    break;
 #  endif
 #  ifdef DEC_3000_300
-		case DEC_3000_300:
-		    cpuType = __MKSTRING("DEC_3000_300");
-		    break;
+                case DEC_3000_300:
+                    cpuType = __MKSTRING("DEC_3000_300");
+                    break;
 #  endif
 #  ifdef DEC_2000_300
-		case DEC_2000_300:
-		    cpuType = __MKSTRING("DEC_2000_300");
-		    break;
+                case DEC_2000_300:
+                    cpuType = __MKSTRING("DEC_2000_300");
+                    break;
 #  endif
 #  ifdef DEC_2100_A500
-		case DEC_2100_A500:
-		    cpuType = __MKSTRING("DEC_2100_A500");
-		    break;
+                case DEC_2100_A500:
+                    cpuType = __MKSTRING("DEC_2100_A500");
+                    break;
 #  endif
 #  ifdef DEC_2100_A50
-		case DEC_2100_A50:
-		    cpuType = __MKSTRING("DEC_2100_A50");
-		    break;
+                case DEC_2100_A50:
+                    cpuType = __MKSTRING("DEC_2100_A50");
+                    break;
 #  endif
 #  ifdef ALPHA_KN20AA
-		case ALPHA_KN20AA:
-		    cpuType = __MKSTRING("ALPHA_KN20AA");
-		    break;
+                case ALPHA_KN20AA:
+                    cpuType = __MKSTRING("ALPHA_KN20AA");
+                    break;
 #  endif
 #  ifdef DEC_21000
-		case DEC_21000:
-		    cpuType = __MKSTRING("DEC_21000");
-		    break;
+                case DEC_21000:
+                    cpuType = __MKSTRING("DEC_21000");
+                    break;
 #  endif
 #  ifdef DEC_AXPVME_64
-		case DEC_AXPVME_64:
-		    cpuType = __MKSTRING("DEC_AXPVME_64");
-		    break;
+                case DEC_AXPVME_64:
+                    cpuType = __MKSTRING("DEC_AXPVME_64");
+                    break;
 #  endif
 #  ifdef DEC_2100_C500
-		case DEC_2100_C500:
-		    cpuType = __MKSTRING("DEC_2100_C500");
-		    break;
+                case DEC_2100_C500:
+                    cpuType = __MKSTRING("DEC_2100_C500");
+                    break;
 #  endif
 #  ifdef DEC_AXPPCI_33
-		case DEC_AXPPCI_33:
-		    cpuType = __MKSTRING("DEC_AXPPCI_33");
-		    break;
+                case DEC_AXPPCI_33:
+                    cpuType = __MKSTRING("DEC_AXPPCI_33");
+                    break;
 #  endif
 #  ifdef DEC_1000
-		case DEC_1000:
-		    cpuType = __MKSTRING("DEC_1000");
-		    break;
+                case DEC_1000:
+                    cpuType = __MKSTRING("DEC_1000");
+                    break;
 #  endif
 #  ifdef EB64_PLUS
-		case EB64_PLUS:
-		    cpuType = __MKSTRING("EB64_PLUS");
-		    break;
+                case EB64_PLUS:
+                    cpuType = __MKSTRING("EB64_PLUS");
+                    break;
 #  endif
 #  ifdef LCA_EB66
-		case LCA_EB66:
-		    cpuType = __MKSTRING("LCA_EB66");
-		    break;
+                case LCA_EB66:
+                    cpuType = __MKSTRING("LCA_EB66");
+                    break;
 #  endif
 #  ifdef ALPHA_EB164
-		case ALPHA_EB164:
-		    cpuType = __MKSTRING("ALPHA_EB164");
-		    break;
+                case ALPHA_EB164:
+                    cpuType = __MKSTRING("ALPHA_EB164");
+                    break;
 #  endif
 #  ifdef DEC_EV45_PBP
-		case DEC_EV45_PBP:
-		    cpuType = __MKSTRING("DEC_EV45_PBP");
-		    break;
+                case DEC_EV45_PBP:
+                    cpuType = __MKSTRING("DEC_EV45_PBP");
+                    break;
 #  endif
 #  ifdef DEC_1000A
-		case DEC_1000A:
-		    cpuType = __MKSTRING("DEC_1000A");
-		    break;
+                case DEC_1000A:
+                    cpuType = __MKSTRING("DEC_1000A");
+                    break;
 #  endif
 #  ifdef DEC_4100
-		case DEC_4100:
-		    cpuType = __MKSTRING("DEC_4100");
-		    break;
+                case DEC_4100:
+                    cpuType = __MKSTRING("DEC_4100");
+                    break;
 #  endif
 #  ifdef DEC_ALPHAVME_224
-		case DEC_ALPHAVME_224:
-		    cpuType = __MKSTRING("DEC_ALPHAVME_224");
-		    break;
+                case DEC_ALPHAVME_224:
+                    cpuType = __MKSTRING("DEC_ALPHAVME_224");
+                    break;
 #  endif
 #  ifdef DEC_1000_5
-		case DEC_1000_5:
-		    cpuType = __MKSTRING("DEC_1000_5");
-		    break;
+                case DEC_1000_5:
+                    cpuType = __MKSTRING("DEC_1000_5");
+                    break;
 #  endif
 #  ifdef DEC_1000A_5
-		case DEC_1000A_5:
-		    cpuType = __MKSTRING("DEC_1000A_5");
-		    break;
+                case DEC_1000A_5:
+                    cpuType = __MKSTRING("DEC_1000A_5");
+                    break;
 #  endif
 #  ifdef UNKN_SYSTEM
-		case UNKN_SYSTEM:
-		    cpuType = __MKSTRING("UNKN_SYSTEM");
-		    break;
+                case UNKN_SYSTEM:
+                    cpuType = __MKSTRING("UNKN_SYSTEM");
+                    break;
 #  endif
-	    }
-	}
+            }
+        }
 # endif /* GSI_CPU */
 
 # if defined(GSI_CPUS_IN_BOX)
-	index = 0;
-	if (getsysinfo(GSI_CPUS_IN_BOX, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
-	    numberOfCPUs   = __MKUINT(retInt32);
-	}
+        index = 0;
+        if (getsysinfo(GSI_CPUS_IN_BOX, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
+            numberOfCPUs   = __MKUINT(retInt32);
+        }
 # endif /* GSI_CPUS_IN_BOX */
 
 # if defined(GSI_PHYSMEM)
-	index = 0;
-	if (getsysinfo(GSI_PHYSMEM, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
-	    INT bytes = retInt32 * 1024;
-
-	    physicalRam   = __MKUINT(bytes);
-	}
+        index = 0;
+        if (getsysinfo(GSI_PHYSMEM, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
+            INT bytes = retInt32 * 1024;
+
+            physicalRam   = __MKUINT(bytes);
+        }
 # endif /* GSI_PHYSMEM */
 
     }
@@ -6533,19 +6575,19 @@
 
 %}.
     sys isNil ifTrue:[
-	sys := self getSystemType.
+        sys := self getSystemType.
     ].
     node isNil ifTrue:[
-	node := self getHostName.
+        node := self getHostName.
     ].
     dom isNil ifTrue:[
-	dom := self getDomainName.
+        dom := self getDomainName.
     ].
     mach isNil ifTrue:[
-	mach := self getCPUType.
+        mach := self getCPUType.
     ].
     arch isNil ifTrue:[
-	arch := sys.
+        arch := sys.
     ].
 
     info := IdentityDictionary new.
@@ -6557,9 +6599,13 @@
     arch notNil ifTrue:[info at:#architecture put:arch].
     dom notNil ifTrue:[info at:#domain put:dom].
     (pageSize notNil and:[physicalPages notNil]) ifTrue:[
-	physicalRam := pageSize * physicalPages. "/ done here - could be largeInt.
+        physicalRam := pageSize * physicalPages. "/ done here - could be largeInt.
+        physicalRam notNil ifTrue:[info at:#physicalRam put:physicalRam].
     ].
-    physicalRam notNil ifTrue:[info at:#physicalRam put:physicalRam].
+    (pageSize notNil and:[availablePages notNil]) ifTrue:[
+        availableRam := pageSize * availablePages. "/ done here - could be largeInt.
+        availableRam notNil ifTrue:[info at:#availableRam put:availableRam].
+    ].
     totalRam notNil ifTrue:[info at:#totalRam put:totalRam].
     sharedRam notNil ifTrue:[info at:#sharedRam put:sharedRam].
     bufferRam notNil ifTrue:[info at:#bufferRam put:bufferRam].
@@ -6574,6 +6620,8 @@
     cpuType notNil ifTrue:[info at:#cpuType put:cpuType].
     dCacheSize notNil ifTrue:[info at:#dCacheSize put:dCacheSize].
     iCacheSize notNil ifTrue:[info at:#iCacheSize put:iCacheSize].
+    instructionSets notNil ifTrue:[info at:#instructionSets put:instructionSets].
+    platform notNil ifTrue:[info at:#platform put:platform].
     info at:#osType put:(self getOSType).
     ^ info
 
@@ -8527,6 +8575,6 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/UnixOS.st,v 1.50 1999-03-03 19:16:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/UnixOS.st,v 1.51 1999-03-31 19:59:01 cg Exp $'
 ! !
 UnixOperatingSystem initialize!
--- a/UnixOperatingSystem.st	Wed Mar 31 20:20:11 1999 +0200
+++ b/UnixOperatingSystem.st	Wed Mar 31 21:59:01 1999 +0200
@@ -6062,52 +6062,58 @@
        This method is mainly provided to augment error reports with some system
        information. 
        (in case of system/version specific OS errors, conditional workarounds and patches
-	may be based upon this info).
+        may be based upon this info).
        Also, applications could enable/disable buffering or otherwise reduce
        their memory usage depending upon the amount of memory installed.
-       Your application should NOT depend upon this in any way.
+       Your application may make use of available information for tuning,
+       but should NEVER DEPEND upon this in any way.
 
      The returned info may (or may not) contain:
-	#system -> some operating system identification (irix, Linux, nt, win32s ...) 
-	#version -> OS version (some os version identification)
-	#release -> OS release (3.5, 1.2.1 ...)
-	#node   -> some host identification (hostname)
-	#domain  -> domain name (hosts domain)
-	#machine -> type of CPU (i586, mips ...)
+        #system -> some operating system identification (irix, Linux, nt, win32s ...) 
+        #version -> OS version (some os version identification)
+        #release -> OS release (3.5, 1.2.1 ...)
+        #node   -> some host identification (hostname)
+        #domain  -> domain name (hosts domain)
+        #machine -> type of CPU (i586, mips ...)
      
      those are currently returned on some machines (no warranty)
      linux:
-	#totalRam         -> total amount of memory available
-	#sharedRam        -> amount of memory which is shared among processes
-		             (i.e. shared code)
-	#bufferRam        -> amount used for buffers
-	#swapSize         -> total size of swap space
-	#freeSwap         -> free amount in swapSpace
+        #totalRam         -> total amount of memory available
+        #sharedRam        -> amount of memory which is shared among processes
+                             (i.e. shared code)
+        #bufferRam        -> amount used for buffers
+        #swapSize         -> total size of swap space
+        #freeSwap         -> free amount in swapSpace
 
      osf:
-	#physicalRam      -> total amount of physical memory
-	#cpuType          -> type of cpu (more detailed than machine)
-	#numberOfCPUs     -> number of cpus in box
+        #physicalRam      -> total amount of physical memory
+        #cpuType          -> type of cpu (more detailed than machine)
+        #numberOfCPUs     -> number of cpus in box
         
      solaris:
-	#physicalRam      -> total amount of physical memory
-	#numberOfCPUs     -> number of cpus in box
-	#dCacheSize       -> bytes in data cache
-	#iCacheSize       -> bytes in data cache
+        #physicalRam      -> total amount of physical memory
+        #availableRam     -> total available amount of physical memory (i.e. unused ram)
+        #freeRam          -> amount of free memory
+        #numberOfCPUs     -> number of cpus in box (online CPUS)
+        [#dCacheSize]     -> bytes in data cache (only available on some solaris versions)
+        [#iCacheSize]     -> bytes in data cache (only available on some solaris versions)
+        [#instructionSets]-> instruction sets available (only available on some solaris versions)
+        [#platform]       -> platform name (only available on some solaris versions)
 
      hpux:
-	#physicalRam      -> total amount of physical memory in box
-	#activeRealMemory -> ? - read pstat documentation
-	#activeVirtualRam -> ? - read pstat documentation
-	#freeMemory       -> ? - read pstat documentation
-	#realMemory       -> ? (amount of memory left to user programs)
-	#virtualRam       -> ? - read pstat documentation
+        #physicalRam      -> total amount of physical memory in box
+        #activeRealMemory -> ? - read pstat documentation
+        #activeVirtualRam -> ? - read pstat documentation
+        #freeMemory       -> ? - read pstat documentation
+        #realMemory       -> ? (amount of memory left to user programs)
+        #virtualRam       -> ? - read pstat documentation
     "
 
     |sys node rel ver mach dom mtyp brel info arch cpuType
-     physicalRam totalRam sharedRam bufferRam swapSize freeSwap
-     numberOfCPUs pageSize physicalPages dCacheSize iCacheSize
-     virtualRam activeVirtualRam realMemory activeRealMemory freeMemory|
+     physicalRam availableRam totalRam sharedRam bufferRam swapSize freeSwap
+     numberOfCPUs pageSize physicalPages availablePages dCacheSize iCacheSize
+     virtualRam activeVirtualRam realMemory activeRealMemory freeMemory
+     instructionSets platform|
 
 %{  /* STACK: 4096 */
 
@@ -6119,11 +6125,11 @@
     struct sysinfo infoBuffer;
 
     if (sysinfo(&infoBuffer) >= 0) {
-	totalRam   = __MKUINT(infoBuffer.totalram);
-	sharedRam = __MKUINT(infoBuffer.sharedram);
-	bufferRam = __MKUINT(infoBuffer.bufferram);
-	swapSize  = __MKUINT(infoBuffer.totalswap);
-	freeSwap  = __MKUINT(infoBuffer.freeswap);
+        totalRam   = __MKUINT(infoBuffer.totalram);
+        sharedRam = __MKUINT(infoBuffer.sharedram);
+        bufferRam = __MKUINT(infoBuffer.bufferram);
+        swapSize  = __MKUINT(infoBuffer.totalswap);
+        freeSwap  = __MKUINT(infoBuffer.freeswap);
     }
 # endif
 #endif /* LINUX */
@@ -6146,18 +6152,18 @@
 
 #if defined(HAS_UNAME)
     {
-	struct utsname ubuff;
-
-	if (uname(&ubuff) >= 0) {
-	    sys  = __MKSTRING(ubuff.sysname);
-	    node = __MKSTRING(ubuff.nodename);
-	    rel  = __MKSTRING(ubuff.release);
-	    ver  = __MKSTRING(ubuff.version);
-	    mach = __MKSTRING(ubuff.machine);
+        struct utsname ubuff;
+
+        if (uname(&ubuff) >= 0) {
+            sys  = __MKSTRING(ubuff.sysname);
+            node = __MKSTRING(ubuff.nodename);
+            rel  = __MKSTRING(ubuff.release);
+            ver  = __MKSTRING(ubuff.version);
+            mach = __MKSTRING(ubuff.machine);
 # ifdef HAS_UTS_DOMAINNAME
-	    dom  = __MKSTRING(ubuff.domainname);
+            dom  = __MKSTRING(ubuff.domainname);
 # endif /* no HAS_UTS_DOMAINNAME */
-	}
+        }
     }
 
 #else /* no UNAME */
@@ -6169,21 +6175,41 @@
 
 #if defined(HAS_SYSINFO) && defined(SI_ARCHITECTURE)
     if (arch == nil) {
-	char buffer[128];
-
-	if (sysinfo(SI_ARCHITECTURE, buffer, sizeof(buffer))) {
-	    arch = __MKSTRING(buffer);
-	}
+        char buffer[128];
+
+        if (sysinfo(SI_ARCHITECTURE, buffer, sizeof(buffer))) {
+            arch = __MKSTRING(buffer);
+        }
+    }
+#endif /* HAS_SYSINFO & SI_ARCHITECTURE */
+
+#if defined(HAS_SYSINFO) && defined(SI_ISALIST)
+    {
+        char buffer[128];
+
+        if (sysinfo(SI_ISALIST, buffer, sizeof(buffer))) {
+            instructionSets = __MKSTRING(buffer);
+        }
+    }
+#endif /* HAS_SYSINFO & SI_ARCHITECTURE */
+
+#if defined(HAS_SYSINFO) && defined(SI_PLATFORM)
+    {
+        char buffer[128];
+
+        if (sysinfo(SI_PLATFORM, buffer, sizeof(buffer))) {
+            platform = __MKSTRING(buffer);
+        }
     }
 #endif /* HAS_SYSINFO & SI_ARCHITECTURE */
 
 #if defined(HAS_GETDOMAINNAME)
     if (dom == nil) {
-	char buffer[128];
-
-	if (getdomainname(buffer, sizeof(buffer)) == 0) {
-	    dom = __MKSTRING(buffer);
-	}
+        char buffer[128];
+
+        if (getdomainname(buffer, sizeof(buffer)) == 0) {
+            dom = __MKSTRING(buffer);
+        }
     }
 #endif /* HAS_GETDOMAINNAME */
 
@@ -6191,46 +6217,62 @@
 
 # ifdef _SC_NPROCESSORS_ONLN
     {
-	long val;
+        long val;
  
-	val = sysconf(_SC_NPROCESSORS_ONLN);
-	if (val > 0) {
-	    numberOfCPUs = __MKINT(val);
-	}
-    }
-# endif
-# if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
+        val = sysconf(_SC_NPROCESSORS_ONLN);
+        if (val > 0) {
+            numberOfCPUs = __MKINT(val);
+        }
+    }
+# endif
+# if defined(_SC_PAGESIZE)
     {
-	long val;
-
-	val = sysconf(_SC_PHYS_PAGES);
-	if (val != -1) {
-	    physicalPages = __MKUINT(val);
-	    val = sysconf(_SC_PAGESIZE);
-	    if (val != -1) {
-		pageSize = __MKUINT(val);
-	    }
-	}
+        long val;
+
+        val = sysconf(_SC_PAGESIZE);
+        if (val != -1) {
+            pageSize = __MKUINT(val);
+        }
+    }
+# endif
+# if defined(_SC_PHYS_PAGES)
+    {
+        long val;
+
+        val = sysconf(_SC_PHYS_PAGES);
+        if (val != -1) {
+            physicalPages = __MKUINT(val);
+        }
+    }
+# endif
+# if defined(_SC_AVPHYS_PAGES)
+    {
+        long val;
+
+        val = sysconf(_SC_AVPHYS_PAGES);
+        if (val != -1) {
+            availablePages = __MKUINT(val);
+        }
     }
 # endif
 # if defined(_SC_ICACHE_SZ)
     {
-	long val;
-
-	val = sysconf(_SC_ICACHE_SZ);
-	if (val != -1) {
-	    iCacheSize = __MKUINT(val);
-	}
+        long val;
+
+        val = sysconf(_SC_ICACHE_SZ);
+        if (val != -1) {
+            iCacheSize = __MKUINT(val);
+        }
     }
 # endif
 # if defined(_SC_DCACHE_SZ)
     {
-	long val;
+        long val;
  
-	val = sysconf(_SC_DCACHE_SZ);
-	if (val != -1) {
-	    dCacheSize = __MKUINT(val);
-	}
+        val = sysconf(_SC_DCACHE_SZ);
+        if (val != -1) {
+            dCacheSize = __MKUINT(val);
+        }
     }
 # endif
 
@@ -6239,293 +6281,293 @@
 
 #if defined(HAS_GETSYSTEMINFO)
     {
-	INT index;
-	int retInt32 = 0;
+        INT index;
+        int retInt32 = 0;
 
 # if defined(GSI_CPU)
-	index = 0;
-	if (getsysinfo(GSI_CPU, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
-	    switch (retInt32) {
+        index = 0;
+        if (getsysinfo(GSI_CPU, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
+            switch (retInt32) {
 #  ifdef VAX_780
-		case VAX_780:
-		    cpuType = __MKSTRING("VAX_780");
-		    break;
+                case VAX_780:
+                    cpuType = __MKSTRING("VAX_780");
+                    break;
 #  endif
 #  ifdef VAX_750
-		case VAX_750:
-		    cpuType = __MKSTRING("VAX_750");
-		    break;
+                case VAX_750:
+                    cpuType = __MKSTRING("VAX_750");
+                    break;
 #  endif
 #  ifdef VAX_730
-		case VAX_730:
-		    cpuType = __MKSTRING("VAX_730");
-		    break;
+                case VAX_730:
+                    cpuType = __MKSTRING("VAX_730");
+                    break;
 #  endif
 #  ifdef VAX_8600
-		case VAX_8600:
-		    cpuType = __MKSTRING("VAX_8600");
-		    break;
+                case VAX_8600:
+                    cpuType = __MKSTRING("VAX_8600");
+                    break;
 #  endif
 #  ifdef VAX_8200
-		case VAX_8200:
-		    cpuType = __MKSTRING("VAX_8200");
-		    break;
+                case VAX_8200:
+                    cpuType = __MKSTRING("VAX_8200");
+                    break;
 #  endif
 #  ifdef VAX_8800
-		case VAX_8800:
-		    cpuType = __MKSTRING("VAX_8800");
-		    break;
+                case VAX_8800:
+                    cpuType = __MKSTRING("VAX_8800");
+                    break;
 #  endif
 #  ifdef MVAX_I
-		case MVAX_I:
-		    cpuType = __MKSTRING("MVAX_I");
-		    break;
+                case MVAX_I:
+                    cpuType = __MKSTRING("MVAX_I");
+                    break;
 #  endif
 #  ifdef MVAX_II
-		case MVAX_II:
-		    cpuType = __MKSTRING("MVAX_II");
-		    break;
+                case MVAX_II:
+                    cpuType = __MKSTRING("MVAX_II");
+                    break;
 #  endif
 #  ifdef V_VAX
-		case V_VAX:
-		    cpuType = __MKSTRING("V_VAX");
-		    break;
+                case V_VAX:
+                    cpuType = __MKSTRING("V_VAX");
+                    break;
 #  endif
 #  ifdef VAX_3600
-		case VAX_3600:
-		    cpuType = __MKSTRING("VAX_3600");
-		    break;
+                case VAX_3600:
+                    cpuType = __MKSTRING("VAX_3600");
+                    break;
 #  endif
 #  ifdef VAX_6200
-		case VAX_6200:
-		    cpuType = __MKSTRING("VAX_6200");
-		    break;
+                case VAX_6200:
+                    cpuType = __MKSTRING("VAX_6200");
+                    break;
 #  endif
 #  ifdef VAX_3400
-		case VAX_3400:
-		    cpuType = __MKSTRING("VAX_3400");
-		    break;
+                case VAX_3400:
+                    cpuType = __MKSTRING("VAX_3400");
+                    break;
 #  endif
 #  ifdef C_VAXSTAR
-		case C_VAXSTAR:
-		    cpuType = __MKSTRING("C_VAXSTAR");
-		    break;
+                case C_VAXSTAR:
+                    cpuType = __MKSTRING("C_VAXSTAR");
+                    break;
 #  endif
 #  ifdef VAX_60
-		case VAX_60:
-		    cpuType = __MKSTRING("VAX_60");
-		    break;
+                case VAX_60:
+                    cpuType = __MKSTRING("VAX_60");
+                    break;
 #  endif
 #  ifdef VAX_3900
-		case VAX_3900:
-		    cpuType = __MKSTRING("VAX_3900");
-		    break;
+                case VAX_3900:
+                    cpuType = __MKSTRING("VAX_3900");
+                    break;
 #  endif
 #  ifdef DS_3100
-		case DS_3100:
-		    cpuType = __MKSTRING("DS_3100");
-		    break;
+                case DS_3100:
+                    cpuType = __MKSTRING("DS_3100");
+                    break;
 #  endif
 #  ifdef VAX_8820
-		case VAX_8820:
-		    cpuType = __MKSTRING("VAX_8820");
-		    break;
+                case VAX_8820:
+                    cpuType = __MKSTRING("VAX_8820");
+                    break;
 #  endif
 #  ifdef DS_5400
-		case DS_5400:
-		    cpuType = __MKSTRING("DS_5400");
-		    break;
+                case DS_5400:
+                    cpuType = __MKSTRING("DS_5400");
+                    break;
 #  endif
 #  ifdef DS_5800
-		case DS_5800:
-		    cpuType = __MKSTRING("DS_5800");
-		    break;
+                case DS_5800:
+                    cpuType = __MKSTRING("DS_5800");
+                    break;
 #  endif
 #  ifdef DS_5000
-		case DS_5000:
-		    cpuType = __MKSTRING("DS_5000");
-		    break;
+                case DS_5000:
+                    cpuType = __MKSTRING("DS_5000");
+                    break;
 #  endif
 #  ifdef DS_CMAX
-		case DS_CMAX:
-		    cpuType = __MKSTRING("DS_CMAX");
-		    break;
+                case DS_CMAX:
+                    cpuType = __MKSTRING("DS_CMAX");
+                    break;
 #  endif
 #  ifdef VAX_6400
-		case VAX_6400:
-		    cpuType = __MKSTRING("VAX_6400");
-		    break;
+                case VAX_6400:
+                    cpuType = __MKSTRING("VAX_6400");
+                    break;
 #  endif
 #  ifdef VAXSTAR
-		case VAXSTAR:
-		    cpuType = __MKSTRING("VAXSTAR");
-		    break;
+                case VAXSTAR:
+                    cpuType = __MKSTRING("VAXSTAR");
+                    break;
 #  endif
 #  ifdef DS_5500
-		case DS_5500:
-		    cpuType = __MKSTRING("DS_5500");
-		    break;
+                case DS_5500:
+                    cpuType = __MKSTRING("DS_5500");
+                    break;
 #  endif
 #  ifdef DS_5100
-		case DS_5100:
-		    cpuType = __MKSTRING("DS_5100");
-		    break;
+                case DS_5100:
+                    cpuType = __MKSTRING("DS_5100");
+                    break;
 #  endif
 #  ifdef VAX_9000
-		case VAX_9000:
-		    cpuType = __MKSTRING("VAX_9000");
-		    break;
+                case VAX_9000:
+                    cpuType = __MKSTRING("VAX_9000");
+                    break;
 #  endif
 #  ifdef DS_500_100
-		case DS_500_100:
-		    cpuType = __MKSTRING("DS_500_100");
-		    break;
+                case DS_500_100:
+                    cpuType = __MKSTRING("DS_500_100");
+                    break;
 #  endif
 
 
 #  ifdef ALPHA_ADU
-		case ALPHA_ADU:
-		    cpuType = __MKSTRING("ALPHA_ADU");
-		    break;
+                case ALPHA_ADU:
+                    cpuType = __MKSTRING("ALPHA_ADU");
+                    break;
 #  endif
 #  ifdef DEC_4000
-		case DEC_4000:
-		    cpuType = __MKSTRING("DEC_4000");
-		    break;
+                case DEC_4000:
+                    cpuType = __MKSTRING("DEC_4000");
+                    break;
 #  endif
 #  ifdef DEC_3000_500
-		case DEC_3000_500:
-		    cpuType = __MKSTRING("DEC_3000_500");
-		    break;
+                case DEC_3000_500:
+                    cpuType = __MKSTRING("DEC_3000_500");
+                    break;
 #  endif
 #  ifdef DEC_7000
-		case DEC_7000:
-		    cpuType = __MKSTRING("DEC_7000");
-		    break;
+                case DEC_7000:
+                    cpuType = __MKSTRING("DEC_7000");
+                    break;
 #  endif
 #  ifdef DS_5000_300
-		case DS_5000_300:
-		    cpuType = __MKSTRING("DS_5000_300");
-		    break;
+                case DS_5000_300:
+                    cpuType = __MKSTRING("DS_5000_300");
+                    break;
 #  endif
 #  ifdef DEC_3000_300
-		case DEC_3000_300:
-		    cpuType = __MKSTRING("DEC_3000_300");
-		    break;
+                case DEC_3000_300:
+                    cpuType = __MKSTRING("DEC_3000_300");
+                    break;
 #  endif
 #  ifdef DEC_2000_300
-		case DEC_2000_300:
-		    cpuType = __MKSTRING("DEC_2000_300");
-		    break;
+                case DEC_2000_300:
+                    cpuType = __MKSTRING("DEC_2000_300");
+                    break;
 #  endif
 #  ifdef DEC_2100_A500
-		case DEC_2100_A500:
-		    cpuType = __MKSTRING("DEC_2100_A500");
-		    break;
+                case DEC_2100_A500:
+                    cpuType = __MKSTRING("DEC_2100_A500");
+                    break;
 #  endif
 #  ifdef DEC_2100_A50
-		case DEC_2100_A50:
-		    cpuType = __MKSTRING("DEC_2100_A50");
-		    break;
+                case DEC_2100_A50:
+                    cpuType = __MKSTRING("DEC_2100_A50");
+                    break;
 #  endif
 #  ifdef ALPHA_KN20AA
-		case ALPHA_KN20AA:
-		    cpuType = __MKSTRING("ALPHA_KN20AA");
-		    break;
+                case ALPHA_KN20AA:
+                    cpuType = __MKSTRING("ALPHA_KN20AA");
+                    break;
 #  endif
 #  ifdef DEC_21000
-		case DEC_21000:
-		    cpuType = __MKSTRING("DEC_21000");
-		    break;
+                case DEC_21000:
+                    cpuType = __MKSTRING("DEC_21000");
+                    break;
 #  endif
 #  ifdef DEC_AXPVME_64
-		case DEC_AXPVME_64:
-		    cpuType = __MKSTRING("DEC_AXPVME_64");
-		    break;
+                case DEC_AXPVME_64:
+                    cpuType = __MKSTRING("DEC_AXPVME_64");
+                    break;
 #  endif
 #  ifdef DEC_2100_C500
-		case DEC_2100_C500:
-		    cpuType = __MKSTRING("DEC_2100_C500");
-		    break;
+                case DEC_2100_C500:
+                    cpuType = __MKSTRING("DEC_2100_C500");
+                    break;
 #  endif
 #  ifdef DEC_AXPPCI_33
-		case DEC_AXPPCI_33:
-		    cpuType = __MKSTRING("DEC_AXPPCI_33");
-		    break;
+                case DEC_AXPPCI_33:
+                    cpuType = __MKSTRING("DEC_AXPPCI_33");
+                    break;
 #  endif
 #  ifdef DEC_1000
-		case DEC_1000:
-		    cpuType = __MKSTRING("DEC_1000");
-		    break;
+                case DEC_1000:
+                    cpuType = __MKSTRING("DEC_1000");
+                    break;
 #  endif
 #  ifdef EB64_PLUS
-		case EB64_PLUS:
-		    cpuType = __MKSTRING("EB64_PLUS");
-		    break;
+                case EB64_PLUS:
+                    cpuType = __MKSTRING("EB64_PLUS");
+                    break;
 #  endif
 #  ifdef LCA_EB66
-		case LCA_EB66:
-		    cpuType = __MKSTRING("LCA_EB66");
-		    break;
+                case LCA_EB66:
+                    cpuType = __MKSTRING("LCA_EB66");
+                    break;
 #  endif
 #  ifdef ALPHA_EB164
-		case ALPHA_EB164:
-		    cpuType = __MKSTRING("ALPHA_EB164");
-		    break;
+                case ALPHA_EB164:
+                    cpuType = __MKSTRING("ALPHA_EB164");
+                    break;
 #  endif
 #  ifdef DEC_EV45_PBP
-		case DEC_EV45_PBP:
-		    cpuType = __MKSTRING("DEC_EV45_PBP");
-		    break;
+                case DEC_EV45_PBP:
+                    cpuType = __MKSTRING("DEC_EV45_PBP");
+                    break;
 #  endif
 #  ifdef DEC_1000A
-		case DEC_1000A:
-		    cpuType = __MKSTRING("DEC_1000A");
-		    break;
+                case DEC_1000A:
+                    cpuType = __MKSTRING("DEC_1000A");
+                    break;
 #  endif
 #  ifdef DEC_4100
-		case DEC_4100:
-		    cpuType = __MKSTRING("DEC_4100");
-		    break;
+                case DEC_4100:
+                    cpuType = __MKSTRING("DEC_4100");
+                    break;
 #  endif
 #  ifdef DEC_ALPHAVME_224
-		case DEC_ALPHAVME_224:
-		    cpuType = __MKSTRING("DEC_ALPHAVME_224");
-		    break;
+                case DEC_ALPHAVME_224:
+                    cpuType = __MKSTRING("DEC_ALPHAVME_224");
+                    break;
 #  endif
 #  ifdef DEC_1000_5
-		case DEC_1000_5:
-		    cpuType = __MKSTRING("DEC_1000_5");
-		    break;
+                case DEC_1000_5:
+                    cpuType = __MKSTRING("DEC_1000_5");
+                    break;
 #  endif
 #  ifdef DEC_1000A_5
-		case DEC_1000A_5:
-		    cpuType = __MKSTRING("DEC_1000A_5");
-		    break;
+                case DEC_1000A_5:
+                    cpuType = __MKSTRING("DEC_1000A_5");
+                    break;
 #  endif
 #  ifdef UNKN_SYSTEM
-		case UNKN_SYSTEM:
-		    cpuType = __MKSTRING("UNKN_SYSTEM");
-		    break;
+                case UNKN_SYSTEM:
+                    cpuType = __MKSTRING("UNKN_SYSTEM");
+                    break;
 #  endif
-	    }
-	}
+            }
+        }
 # endif /* GSI_CPU */
 
 # if defined(GSI_CPUS_IN_BOX)
-	index = 0;
-	if (getsysinfo(GSI_CPUS_IN_BOX, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
-	    numberOfCPUs   = __MKUINT(retInt32);
-	}
+        index = 0;
+        if (getsysinfo(GSI_CPUS_IN_BOX, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
+            numberOfCPUs   = __MKUINT(retInt32);
+        }
 # endif /* GSI_CPUS_IN_BOX */
 
 # if defined(GSI_PHYSMEM)
-	index = 0;
-	if (getsysinfo(GSI_PHYSMEM, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
-	    INT bytes = retInt32 * 1024;
-
-	    physicalRam   = __MKUINT(bytes);
-	}
+        index = 0;
+        if (getsysinfo(GSI_PHYSMEM, &retInt32, sizeof(retInt32), &index, NULL) > 0) {
+            INT bytes = retInt32 * 1024;
+
+            physicalRam   = __MKUINT(bytes);
+        }
 # endif /* GSI_PHYSMEM */
 
     }
@@ -6533,19 +6575,19 @@
 
 %}.
     sys isNil ifTrue:[
-	sys := self getSystemType.
+        sys := self getSystemType.
     ].
     node isNil ifTrue:[
-	node := self getHostName.
+        node := self getHostName.
     ].
     dom isNil ifTrue:[
-	dom := self getDomainName.
+        dom := self getDomainName.
     ].
     mach isNil ifTrue:[
-	mach := self getCPUType.
+        mach := self getCPUType.
     ].
     arch isNil ifTrue:[
-	arch := sys.
+        arch := sys.
     ].
 
     info := IdentityDictionary new.
@@ -6557,9 +6599,13 @@
     arch notNil ifTrue:[info at:#architecture put:arch].
     dom notNil ifTrue:[info at:#domain put:dom].
     (pageSize notNil and:[physicalPages notNil]) ifTrue:[
-	physicalRam := pageSize * physicalPages. "/ done here - could be largeInt.
+        physicalRam := pageSize * physicalPages. "/ done here - could be largeInt.
+        physicalRam notNil ifTrue:[info at:#physicalRam put:physicalRam].
     ].
-    physicalRam notNil ifTrue:[info at:#physicalRam put:physicalRam].
+    (pageSize notNil and:[availablePages notNil]) ifTrue:[
+        availableRam := pageSize * availablePages. "/ done here - could be largeInt.
+        availableRam notNil ifTrue:[info at:#availableRam put:availableRam].
+    ].
     totalRam notNil ifTrue:[info at:#totalRam put:totalRam].
     sharedRam notNil ifTrue:[info at:#sharedRam put:sharedRam].
     bufferRam notNil ifTrue:[info at:#bufferRam put:bufferRam].
@@ -6574,6 +6620,8 @@
     cpuType notNil ifTrue:[info at:#cpuType put:cpuType].
     dCacheSize notNil ifTrue:[info at:#dCacheSize put:dCacheSize].
     iCacheSize notNil ifTrue:[info at:#iCacheSize put:iCacheSize].
+    instructionSets notNil ifTrue:[info at:#instructionSets put:instructionSets].
+    platform notNil ifTrue:[info at:#platform put:platform].
     info at:#osType put:(self getOSType).
     ^ info
 
@@ -8527,6 +8575,6 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.50 1999-03-03 19:16:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.51 1999-03-31 19:59:01 cg Exp $'
 ! !
 UnixOperatingSystem initialize!