Annotation of XNU/osfmk/mach/host_info.h, revision 1.1.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.