Annotation of XNU/osfmk/mach/host_info.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * @OSF_COPYRIGHT@
        !            24:  */
        !            25: /*
        !            26:  * HISTORY
        !            27:  * 
        !            28:  * Revision 1.1.1.1  1998/09/22 21:05:30  wsanchez
        !            29:  * Import of Mac OS X kernel (~semeria)
        !            30:  *
        !            31:  * Revision 1.1.1.1  1998/03/07 02:25:45  wsanchez
        !            32:  * Import of OSF Mach kernel (~mburg)
        !            33:  *
        !            34:  * Revision 1.2.29.1  1997/10/30  15:32:29  barbou
        !            35:  *     Added HOST_CPU_LOAD_INFO flavor for host_statistics().
        !            36:  *     [1997/10/30  15:22:10  barbou]
        !            37:  *
        !            38:  * Revision 1.2.18.6  1996/01/09  19:21:44  devrcs
        !            39:  *     Changed members of struct host_priority_info to type integer_t.
        !            40:  *     Change HOST_RESOURCE_SIZES_COUNT and HOST_PRIORITY_INFO_COUNT
        !            41:  *     to be in integer_t units, not int.  host_info expects the count
        !            42:  *     to be the number of integer_t's to copy.
        !            43:  *     [1995/12/01  19:49:11  jfraser]
        !            44:  * 
        !            45:  *     Merged '64-bit safe' changes from DEC alpha port.
        !            46:  *     [1995/11/21  18:08:49  jfraser]
        !            47:  * 
        !            48:  * Revision 1.2.18.5  1995/04/07  19:05:07  barbou
        !            49:  *     VM Merge - Task Swapper.
        !            50:  *     Add new host_paging_info flavor.
        !            51:  *     [91/09/22  13:20:45  jeffc]
        !            52:  *     [94/07/28            barbou]
        !            53:  *     [95/03/10            barbou]
        !            54:  * 
        !            55:  * Revision 1.2.18.4  1995/02/24  14:48:07  alanl
        !            56:  *     Merged with DIPC2_SHARED.
        !            57:  *     [95/01/03            alanl]
        !            58:  * 
        !            59:  * Revision 1.2.22.2  1994/10/14  03:50:38  dwm
        !            60:  *     mk6 CR668 - 1.3b26 merge
        !            61:  *     64bit cleanup
        !            62:  *     [1994/10/14  03:42:37  dwm]
        !            63:  * 
        !            64:  * Revision 1.2.18.2  1994/09/23  02:36:22  ezf
        !            65:  *     change marker to not FREE
        !            66:  *     [1994/09/22  21:39:41  ezf]
        !            67:  * 
        !            68:  * Revision 1.2.18.1  1994/08/07  20:48:45  bolinger
        !            69:  *     Merge up to colo_b7.
        !            70:  *     [1994/08/01  21:01:21  bolinger]
        !            71:  * 
        !            72:  * Revision 1.2.15.2  1994/06/25  03:47:01  dwm
        !            73:  *     mk6 CR98 - add flavor interface typedefs (host_flavor_t).
        !            74:  *     [1994/06/24  21:54:43  dwm]
        !            75:  * 
        !            76:  * Revision 1.2.15.1  1994/02/24  19:05:22  rwd
        !            77:  *     Add HOST_PRIORITY_INFO
        !            78:  *     [94/02/22            rwd]
        !            79:  * 
        !            80:  * Revision 1.2.4.6  1993/10/28  17:17:10  jeffc
        !            81:  *     CR10039 -- Add flavor interface typedefs
        !            82:  *     [1993/10/28  13:55:48  jeffc]
        !            83:  * 
        !            84:  * Revision 1.2.20.1  1994/10/03  18:47:25  sjs
        !            85:  *     Intel update: often used KERNEL_BOOTMAGIC_MAX.
        !            86:  *     [94/09/22            sjs]
        !            87:  * 
        !            88:  * Revision 1.2.4.7  1994/01/28  18:14:07  chasb
        !            89:  *     Expand Copyrights
        !            90:  *     [1994/01/27  20:04:11  chasb]
        !            91:  * 
        !            92:  * Revision 1.2.4.6  1993/10/28  17:17:10  jeffc
        !            93:  *     CR10039 -- Add flavor interface typedefs
        !            94:  *     [1993/10/28  13:55:48  jeffc]
        !            95:  * 
        !            96:  * Revision 1.2.4.5  1993/07/07  15:48:51  brezak
        !            97:  *     Add host_info() flavor HOST_RESOURCE_SIZES and attendant struct.
        !            98:  *     [1993/07/07  15:47:32  brezak]
        !            99:  * 
        !           100:  * Revision 1.2.4.4  1993/06/29  17:54:26  brezak
        !           101:  *     Remove HOST_PROCESSOR_SLOTS host_info flavor. Use host_processot_slots().
        !           102:  *     [1993/06/28  20:58:50  brezak]
        !           103:  * 
        !           104:  * Revision 1.2.4.3  1993/06/15  20:28:11  brezak
        !           105:  *     HOST_LOAD_INFO is now returned by host_statistics().
        !           106:  *     Add HOST_VM_INFO for host_statistics(). Include <mach/vm_statistics.h>.
        !           107:  *     [1993/06/14  14:18:40  brezak]
        !           108:  * 
        !           109:  * Revision 1.1.5.2  1993/06/02  23:43:38  jeffc
        !           110:  *     Added to OSF/1 R1.3 from NMK15.0.
        !           111:  *     [1993/06/02  21:15:59  jeffc]
        !           112:  * 
        !           113:  * Revision 1.2  1993/04/19  16:33:24  devrcs
        !           114:  *     ansi C conformance changes
        !           115:  *     [1993/02/02  18:53:04  david]
        !           116:  * 
        !           117:  * Revision 1.1  1992/09/30  02:30:38  robert
        !           118:  *     Initial revision
        !           119:  * 
        !           120:  * $EndLog$
        !           121:  */
        !           122: /* CMU_HIST */
        !           123: /*
        !           124:  * Revision 2.4.2.1  92/01/09  18:44:17  jsb
        !           125:  *     From [email protected]: defined kernel_boot_info_t.
        !           126:  *     [92/01/08  15:01:53  jsb]
        !           127:  * 
        !           128:  * Revision 2.4  91/05/14  16:51:48  mrt
        !           129:  *     Correcting copyright
        !           130:  * 
        !           131:  * Revision 2.3  91/02/05  17:31:58  mrt
        !           132:  *     Changed to new Mach copyright
        !           133:  *     [91/02/01  17:17:13  mrt]
        !           134:  * 
        !           135:  * Revision 2.2  90/06/02  14:57:58  rpd
        !           136:  *     Added HOST_LOAD_INFO and related definitions.
        !           137:  *     [90/04/27            rpd]
        !           138:  *     Created for new host/processor technology.
        !           139:  *     [90/03/26  23:50:51  rpd]
        !           140:  * 
        !           141:  *     Cleanup changes.
        !           142:  *     [89/08/02            dlb]
        !           143:  *     Add sched_info flavor to return minimum times for use by
        !           144:  *     external schedulers.
        !           145:  *     [89/06/08            dlb]
        !           146:  *     Added kernel_version type definitions.
        !           147:  *     [88/12/02            dlb]
        !           148:  * 
        !           149:  * Revision 2.4  89/10/15  02:05:31  rpd
        !           150:  *     Minor cleanups.
        !           151:  * 
        !           152:  * Revision 2.3  89/10/11  17:32:15  dlb
        !           153:  *     Include mach/machine/vm_types.h instead of mach/vm_param.h
        !           154:  *     [89/10/11            dlb]
        !           155:  * 
        !           156:  * Revision 2.2  89/10/11  14:36:55  dlb
        !           157:  *     Add sched_info flavor to return minimum times for use by
        !           158:  *     external schedulers.
        !           159:  *     [89/06/08            dlb]
        !           160:  * 
        !           161:  *     Added kernel_version type definitions.
        !           162:  *     [88/12/02            dlb]
        !           163:  * 
        !           164:  * 30-Nov-88  David Black (dlb) at Carnegie-Mellon University
        !           165:  *     Created.  2 flavors so far: basic info,  slot numbers.
        !           166:  *
        !           167:  */
        !           168: /* CMU_ENDHIST */
        !           169: /* 
        !           170:  * Mach Operating System
        !           171:  * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
        !           172:  * All Rights Reserved.
        !           173:  * 
        !           174:  * Permission to use, copy, modify and distribute this software and its
        !           175:  * documentation is hereby granted, provided that both the copyright
        !           176:  * notice and this permission notice appear in all copies of the
        !           177:  * software, derivative works or modified versions, and any portions
        !           178:  * thereof, and that both notices appear in supporting documentation.
        !           179:  * 
        !           180:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !           181:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !           182:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !           183:  * 
        !           184:  * Carnegie Mellon requests users of this software to return to
        !           185:  * 
        !           186:  *  Software Distribution Coordinator  or  [email protected]
        !           187:  *  School of Computer Science
        !           188:  *  Carnegie Mellon University
        !           189:  *  Pittsburgh PA 15213-3890
        !           190:  * 
        !           191:  * any improvements or extensions that they make and grant Carnegie Mellon
        !           192:  * the rights to redistribute these changes.
        !           193:  */
        !           194: /*
        !           195:  */
        !           196: 
        !           197: /*
        !           198:  *     File:   mach/host_info.h
        !           199:  *
        !           200:  *     Definitions for host_info call.
        !           201:  */
        !           202: 
        !           203: #ifndef        _MACH_HOST_INFO_H_
        !           204: #define        _MACH_HOST_INFO_H_
        !           205: 
        !           206: #include <mach/vm_statistics.h>
        !           207: #include <mach/machine.h>
        !           208: #include <mach/machine/vm_types.h>
        !           209: #include <mach/time_value.h>
        !           210: 
        !           211: /*
        !           212:  *     Generic information structure to allow for expansion.
        !           213:  */
        !           214: typedef integer_t      *host_info_t;           /* varying array of int. */
        !           215: 
        !           216: #define        HOST_INFO_MAX   (1024)          /* max array size */
        !           217: typedef integer_t      host_info_data_t[HOST_INFO_MAX];
        !           218: 
        !           219: #define KERNEL_VERSION_MAX (512)
        !           220: typedef char   kernel_version_t[KERNEL_VERSION_MAX];
        !           221: 
        !           222: #define KERNEL_BOOT_INFO_MAX (4096)
        !           223: typedef char   kernel_boot_info_t[KERNEL_BOOT_INFO_MAX];
        !           224: 
        !           225: #define        KERNEL_BOOTMAGIC_MAX    (8192)
        !           226: 
        !           227: /*
        !           228:  *     Currently defined information.
        !           229:  */
        !           230: /* host_info() */
        !           231: typedef        integer_t       host_flavor_t;
        !           232: #define HOST_BASIC_INFO                1       /* basic info */
        !           233: #define HOST_SCHED_INFO                3       /* scheduling info */
        !           234: #define HOST_RESOURCE_SIZES    4       /* kernel struct sizes */
        !           235: #define HOST_PRIORITY_INFO     5       /* priority information */
        !           236: #define HOST_PAGING_INFO       6       /* VM/paging info */
        !           237: 
        !           238: struct host_basic_info {
        !           239:        integer_t       max_cpus;       /* max number of cpus possible */
        !           240:        integer_t       avail_cpus;     /* number of cpus now available */
        !           241:        vm_size_t       memory_size;    /* size of memory in bytes */
        !           242:        cpu_type_t      cpu_type;       /* cpu type */
        !           243:        cpu_subtype_t   cpu_subtype;    /* cpu subtype */
        !           244: };
        !           245: 
        !           246: typedef        struct host_basic_info  host_basic_info_data_t;
        !           247: typedef struct host_basic_info *host_basic_info_t;
        !           248: #define HOST_BASIC_INFO_COUNT \
        !           249:                (sizeof(host_basic_info_data_t)/sizeof(integer_t))
        !           250: 
        !           251: struct host_sched_info {
        !           252:        integer_t       min_timeout;    /* minimum timeout in milliseconds */
        !           253:        integer_t       min_quantum;    /* minimum quantum in milliseconds */
        !           254: };
        !           255: 
        !           256: typedef        struct host_sched_info  host_sched_info_data_t;
        !           257: typedef struct host_sched_info *host_sched_info_t;
        !           258: #define HOST_SCHED_INFO_COUNT \
        !           259:                (sizeof(host_sched_info_data_t)/sizeof(integer_t))
        !           260: 
        !           261: struct kernel_resource_sizes {
        !           262:        vm_size_t       task;
        !           263:         vm_size_t      thread;
        !           264:         vm_size_t      port;
        !           265:         vm_size_t      memory_region;
        !           266:         vm_size_t      memory_object;
        !           267: };
        !           268: 
        !           269: typedef struct kernel_resource_sizes   kernel_resource_sizes_data_t;
        !           270: typedef struct kernel_resource_sizes   *kernel_resource_sizes_t;
        !           271: #define HOST_RESOURCE_SIZES_COUNT \
        !           272:                (sizeof(kernel_resource_sizes_data_t)/sizeof(integer_t))
        !           273: 
        !           274: struct host_priority_info {
        !           275:        integer_t       kernel_priority;
        !           276:        integer_t       system_priority;
        !           277:        integer_t       server_priority;
        !           278:        integer_t       user_priority;
        !           279:        integer_t       depress_priority;
        !           280:        integer_t       idle_priority;
        !           281:        integer_t       minimum_priority;
        !           282:        integer_t       maximum_priority;
        !           283: };
        !           284: 
        !           285: typedef struct host_priority_info      host_priority_info_data_t;
        !           286: typedef struct host_priority_info      *host_priority_info_t;
        !           287: #define HOST_PRIORITY_INFO_COUNT \
        !           288:                (sizeof(host_priority_info_data_t)/sizeof(integer_t))
        !           289: 
        !           290: /* host_statistics() */
        !           291: #define        HOST_LOAD_INFO          1       /* System loading stats */
        !           292: #define HOST_VM_INFO           2       /* Virtual memory stats */
        !           293: #define HOST_CPU_LOAD_INFO     3       /* CPU load stats */
        !           294: 
        !           295: struct host_load_info {
        !           296:        integer_t       avenrun[3];     /* scaled by LOAD_SCALE */
        !           297:        integer_t       mach_factor[3]; /* scaled by LOAD_SCALE */
        !           298: };
        !           299: 
        !           300: typedef struct host_load_info  host_load_info_data_t;
        !           301: typedef struct host_load_info  *host_load_info_t;
        !           302: #define        HOST_LOAD_INFO_COUNT \
        !           303:                (sizeof(host_load_info_data_t)/sizeof(integer_t))
        !           304: 
        !           305: /* in <mach/vm_statistics.h> */
        !           306: #define        HOST_VM_INFO_COUNT \
        !           307:                (sizeof(vm_statistics_data_t)/sizeof(integer_t))
        !           308: 
        !           309: struct host_cpu_load_info {            /* number of ticks while running... */
        !           310:        unsigned long   cpu_ticks[CPU_STATE_MAX]; /* ... in the given mode */
        !           311: };
        !           312: typedef struct host_cpu_load_info      host_cpu_load_info_data_t;
        !           313: typedef struct host_cpu_load_info      *host_cpu_load_info_t;
        !           314: #define HOST_CPU_LOAD_INFO_COUNT \
        !           315:                (sizeof (host_cpu_load_info_data_t) / sizeof (integer_t))
        !           316: 
        !           317: struct host_paging_info {
        !           318:        time_value_t    sample_time;    /* (TOD) time sample taken */
        !           319:        time_value_t    reset_time;     /* (TOD) time at last reset */
        !           320: 
        !           321:                        /* Information about page queues */
        !           322:        long    pagesize;               /* page size in bytes */
        !           323:        long    free_count;             /* # of pages free */
        !           324:        long    active_count;           /* # of pages active */
        !           325:        long    inactive_count;         /* # of pages inactive */
        !           326:        long    wire_count;             /* # of pages wired down */
        !           327: 
        !           328:                        /* Information about page faults */
        !           329:        long    faults;                 /* # of faults */
        !           330:        long    zero_fill_count;        /* # of zero fill pages */
        !           331:        long    pageins;                /* # of faults resulting in pageins */
        !           332:        long    pages_pagedin;          /* # of pages paged in */
        !           333:        long    cow_faults;             /* # of copy-on-write faults */
        !           334:        long    reactivations;          /* # of pages reactivated */
        !           335: 
        !           336:                        /* Information about object cache performance */
        !           337:        long    lookups;                /* object cache lookups */
        !           338:        long    hits;                   /* object cache hits */
        !           339: 
        !           340:                        /* Information about page replacement algorithm */
        !           341:        long    pageouts;               /* # of pageout operations (clusters) */
        !           342:        long    pages_pagedout;         /* # of pages paged out */
        !           343: };
        !           344: 
        !           345: typedef struct host_paging_info        host_paging_info_data_t;
        !           346: typedef struct host_paging_info        *host_paging_info_t;
        !           347: #define HOST_PAGING_INFO_COUNT \
        !           348:                (sizeof(host_paging_info_data_t)/sizeof(int))
        !           349: 
        !           350: #endif /* _MACH_HOST_INFO_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.