]> git.saurik.com Git - apple/system_cmds.git/blobdiff - hostinfo.tproj/hostinfo.c
system_cmds-735.20.1.tar.gz
[apple/system_cmds.git] / hostinfo.tproj / hostinfo.c
index b22849932e71866d261558f55f538112701e6387..1993b30c2daca7b9e5897d6ae9a87868619c8b47 100644 (file)
@@ -1,28 +1,27 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999-2016 Apple Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
- * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
- * 
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- * 
+ *
+ * "Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
+ * Reserved.  This file contains Original Code and/or Modifications of
+ * Original Code as defined in and that are subject to the Apple Public
+ * Source License Version 1.0 (the 'License').  You may not use this file
+ * except in compliance with the License.  Please obtain a copy of the
+ * License at http://www.apple.com/publicsource and read it before using
+ * this file.
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- * 
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
+ * License for the specific language governing rights and limitations
+ * under the License."
+ *
  * @APPLE_LICENSE_HEADER_END@
  */
-/* 
+/*
  * Mach Operating System
  * Copyright (c) 1990 Carnegie-Mellon University
  * All rights reserved.  The CMU software License Agreement specifies
@@ -40,7 +39,8 @@
 
 #include <mach/mach.h>
 #include <mach/mach_error.h>
-#include <mach/bootstrap.h>
+#include <sys/sysctl.h>
+#include <sys/errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -48,12 +48,16 @@ struct host_basic_info      hi;
 kernel_version_t       version;
 int                    slots[1024];
 
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
 {
        kern_return_t           ret;
-       int                     size;
+       unsigned int            size, count;
        char                    *cpu_name, *cpu_subname;
-       int                     i, count;
+       int                     i;
+       int                     mib[2];
+       size_t                  len;
+       uint64_t                memsize;
        processor_set_name_port_t               default_pset;
        host_name_port_t                        host;
        struct processor_set_basic_info basic_info;
@@ -94,25 +98,44 @@ int main(int argc, char *argv[])
                mach_error(argv[0], ret);
                 exit(EXIT_FAILURE);
        }
+
+       mib[0] = CTL_HW;
+       mib[1] = HW_MEMSIZE;
+       len = sizeof(memsize);
+       memsize = 0L;
+       if(sysctl(mib, 2, &memsize, &len, NULL, 0 ) == -1)
+       {
+           perror("sysctl");
+           exit(EXIT_FAILURE);
+       }
+
        if (hi.max_cpus > 1)
                printf("Kernel configured for up to %d processors.\n",
                        hi.max_cpus);
        else
                printf("Kernel configured for a single processor only.\n");
-       printf("%d processor%s physically available.\n", hi.avail_cpus,
-               (hi.avail_cpus > 1) ? "s are" : " is");
+       printf("%d processor%s physically available.\n", hi.physical_cpu,
+               (hi.physical_cpu > 1) ? "s are" : " is");
+
+       printf("%d processor%s logically available.\n", hi.logical_cpu,
+               (hi.logical_cpu > 1) ? "s are" : " is");
 
        printf("Processor type:");
        slot_name(hi.cpu_type, hi.cpu_subtype, &cpu_name, &cpu_subname);
        printf(" %s (%s)\n", cpu_name, cpu_subname);
 
        printf("Processor%s active:", (hi.avail_cpus > 1) ? "s" : "");
-       for (i = 0; i < hi.avail_cpus; i++) 
+       for (i = 0; i < hi.avail_cpus; i++)
                printf(" %d", i);
        printf("\n");
 
-       printf("Primary memory available: %.2f megabytes.\n",
-                       (float)hi.memory_size/(1024.0*1024.0));
+       if (((float)memsize / (1024.0 * 1024.0)) >= 1024.0)
+           printf("Primary memory available: %.2f gigabytes\n",
+             (float)memsize/(1024.0*1024.0*1024.0));
+       else
+           printf("Primary memory available: %.2f megabytes\n",
+             (float)memsize/(1024.0*1024.0));
+
        printf("Default processor set: %d tasks, %d threads, %d processors\n",
                load_info.task_count, load_info.thread_count, basic_info.processor_count);
        printf("Load average: %d.%02d, Mach factor: %d.%02d\n",
@@ -120,5 +143,6 @@ int main(int argc, char *argv[])
                (load_info.load_average%LOAD_SCALE)/10,
                load_info.mach_factor/LOAD_SCALE,
                (load_info.mach_factor%LOAD_SCALE)/10);
-}
 
+       exit(0);
+}