|
|
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_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.