|
|
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:46 wsanchez ! 32: * Import of OSF Mach kernel (~mburg) ! 33: * ! 34: * Revision 1.2.15.4 1996/01/09 19:22:17 devrcs ! 35: * Changes PROCESSOR_SET_*_COUNT to be in sizeof natural_t units ! 36: * instead of sizeof int . This agrees with mach_types.defs. ! 37: * [1995/12/01 19:49:29 jfraser] ! 38: * ! 39: * Merged '64-bit safe' changes from DEC alpha port. ! 40: * [1995/11/21 18:09:26 jfraser] ! 41: * ! 42: * Revision 1.2.15.3 1995/01/06 19:51:34 devrcs ! 43: * mk6 CR668 - 1.3b26 merge ! 44: * 64bit changes, typedefs ! 45: * [1994/10/14 03:43:07 dwm] ! 46: * ! 47: * Revision 1.2.15.2 1994/09/23 02:41:50 ezf ! 48: * change marker to not FREE ! 49: * [1994/09/22 21:42:27 ezf] ! 50: * ! 51: * Revision 1.2.15.1 1994/08/07 20:49:52 bolinger ! 52: * Merge up to colo_b7. ! 53: * [1994/08/01 21:01:59 bolinger] ! 54: * ! 55: * Revision 1.2.12.3 1994/06/25 03:47:17 dwm ! 56: * mk6 CR98 - add flavor interface typedefs (processor(_set)_flavor_t). ! 57: * [1994/06/24 21:54:55 dwm] ! 58: * ! 59: * Revision 1.2.12.2 1994/05/02 21:36:00 dwm ! 60: * Remove nmk15_compat support. ! 61: * [1994/05/02 21:09:07 dwm] ! 62: * ! 63: * Revision 1.2.12.1 1994/01/12 17:57:22 dwm ! 64: * Fix "ifdef" NMK15_COMPAT to "if" ! 65: * [1994/01/12 17:31:11 dwm] ! 66: * ! 67: * Revision 1.2.3.6 1993/08/03 18:29:48 gm ! 68: * CR9596: Change KERNEL to MACH_KERNEL. ! 69: * [1993/08/02 18:30:33 gm] ! 70: * ! 71: * Revision 1.2.3.5 1993/07/08 19:04:50 watkins ! 72: * Change contents of struct processor_set_basic_info and add ! 73: * struct processor_set_load_info for spec conformance. ! 74: * [1993/07/07 21:04:07 watkins] ! 75: * ! 76: * Revision 1.2.3.4 1993/06/29 21:55:48 watkins ! 77: * New defines for scheduling control. ! 78: * [1993/06/29 20:50:51 watkins] ! 79: * ! 80: * Revision 1.2.3.3 1993/06/29 17:54:42 brezak ! 81: * Add type for processor_slot_t. ! 82: * [1993/06/28 20:59:17 brezak] ! 83: * ! 84: * Revision 1.2.3.2 1993/06/09 02:43:05 gm ! 85: * Added to OSF/1 R1.3 from NMK15.0. ! 86: * [1993/06/02 21:17:58 jeffc] ! 87: * ! 88: * Revision 1.2 1993/04/19 16:38:44 devrcs ! 89: * ansi C conformance changes ! 90: * [1993/02/02 18:54:34 david] ! 91: * ! 92: * Revision 1.1 1992/09/30 02:32:02 robert ! 93: * Initial revision ! 94: * ! 95: * $EndLog$ ! 96: */ ! 97: /* CMU_HIST */ ! 98: /* ! 99: * Revision 2.4 91/05/14 16:58:46 mrt ! 100: * Correcting copyright ! 101: * ! 102: * Revision 2.3 91/02/05 17:35:31 mrt ! 103: * Changed to new Mach copyright ! 104: * [91/02/01 17:20:39 mrt] ! 105: * ! 106: * Revision 2.2 90/06/02 14:59:49 rpd ! 107: * Created for new host/processor technology. ! 108: * [90/03/26 23:51:38 rpd] ! 109: * ! 110: * Merge to X96 ! 111: * [89/08/02 23:12:21 dlb] ! 112: * ! 113: * Add scheduling flavor of information. ! 114: * [89/07/25 18:52:18 dlb] ! 115: * ! 116: * Add load average and mach factor to processor set basic info. ! 117: * [89/02/09 dlb] ! 118: * ! 119: * Revision 2.3 89/10/15 02:05:54 rpd ! 120: * Minor cleanups. ! 121: * ! 122: * Revision 2.2 89/10/11 14:41:03 dlb ! 123: * Add scheduling flavor of information. ! 124: * ! 125: * Add load average and mach factor to processor set basic info. ! 126: * [89/02/09 dlb] ! 127: * ! 128: */ ! 129: /* CMU_ENDHIST */ ! 130: /* ! 131: * Mach Operating System ! 132: * Copyright (c) 1991,1990,1989 Carnegie Mellon University ! 133: * All Rights Reserved. ! 134: * ! 135: * Permission to use, copy, modify and distribute this software and its ! 136: * documentation is hereby granted, provided that both the copyright ! 137: * notice and this permission notice appear in all copies of the ! 138: * software, derivative works or modified versions, and any portions ! 139: * thereof, and that both notices appear in supporting documentation. ! 140: * ! 141: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ! 142: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ! 143: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ! 144: * ! 145: * Carnegie Mellon requests users of this software to return to ! 146: * ! 147: * Software Distribution Coordinator or [email protected] ! 148: * School of Computer Science ! 149: * Carnegie Mellon University ! 150: * Pittsburgh PA 15213-3890 ! 151: * ! 152: * any improvements or extensions that they make and grant Carnegie Mellon ! 153: * the rights to redistribute these changes. ! 154: */ ! 155: /* ! 156: */ ! 157: ! 158: /* ! 159: * File: mach/processor_info.h ! 160: * Author: David L. Black ! 161: * Date: 1988 ! 162: * ! 163: * Data structure definitions for processor_info, processor_set_info ! 164: */ ! 165: ! 166: #ifndef _MACH_PROCESSOR_INFO_H_ ! 167: #define _MACH_PROCESSOR_INFO_H_ ! 168: ! 169: #include <mach/machine.h> ! 170: #include <mach/machine/processor_info.h> ! 171: ! 172: /* ! 173: * Generic information structure to allow for expansion. ! 174: */ ! 175: typedef integer_t *processor_info_t; /* varying array of int. */ ! 176: ! 177: #define PROCESSOR_INFO_MAX (1024) /* max array size */ ! 178: typedef integer_t processor_info_data_t[PROCESSOR_INFO_MAX]; ! 179: ! 180: ! 181: typedef integer_t *processor_set_info_t; /* varying array of int. */ ! 182: ! 183: #define PROCESSOR_SET_INFO_MAX (1024) /* max array size */ ! 184: typedef integer_t processor_set_info_data_t[PROCESSOR_SET_INFO_MAX]; ! 185: ! 186: ! 187: typedef int *processor_slot_t; /* varying array of int. */ ! 188: ! 189: /* ! 190: * Currently defined information. ! 191: */ ! 192: typedef int processor_flavor_t; ! 193: #define PROCESSOR_BASIC_INFO 1 /* basic information */ ! 194: #define PROCESSOR_CPU_LOAD_INFO 2 /* cpu load information */ ! 195: #define PROCESSOR_PM_REGS_INFO 0x10000001 /* performance monitor register info */ ! 196: ! 197: struct processor_basic_info { ! 198: cpu_type_t cpu_type; /* type of cpu */ ! 199: cpu_subtype_t cpu_subtype; /* subtype of cpu */ ! 200: boolean_t running; /* is processor running */ ! 201: int slot_num; /* slot number */ ! 202: boolean_t is_master; /* is this the master processor */ ! 203: }; ! 204: ! 205: typedef struct processor_basic_info processor_basic_info_data_t; ! 206: typedef struct processor_basic_info *processor_basic_info_t; ! 207: #define PROCESSOR_BASIC_INFO_COUNT \ ! 208: (sizeof(processor_basic_info_data_t)/sizeof(natural_t)) ! 209: ! 210: struct processor_cpu_load_info { /* number of ticks while running... */ ! 211: unsigned long cpu_ticks[CPU_STATE_MAX]; /* ... in the given mode */ ! 212: }; ! 213: ! 214: typedef struct processor_cpu_load_info processor_cpu_load_info_data_t; ! 215: typedef struct processor_cpu_load_info *processor_cpu_load_info_t; ! 216: #define PROCESSOR_CPU_LOAD_INFO_COUNT \ ! 217: (sizeof(processor_cpu_load_info_data_t)/sizeof(natural_t)) ! 218: ! 219: /* ! 220: * Scaling factor for load_average, mach_factor. ! 221: */ ! 222: #define LOAD_SCALE 1000 ! 223: ! 224: typedef int processor_set_flavor_t; ! 225: #define PROCESSOR_SET_BASIC_INFO 5 /* basic information */ ! 226: ! 227: struct processor_set_basic_info { ! 228: int processor_count; /* How many processors */ ! 229: int default_policy; /* When others not enabled */ ! 230: }; ! 231: ! 232: typedef struct processor_set_basic_info processor_set_basic_info_data_t; ! 233: typedef struct processor_set_basic_info *processor_set_basic_info_t; ! 234: #define PROCESSOR_SET_BASIC_INFO_COUNT \ ! 235: (sizeof(processor_set_basic_info_data_t)/sizeof(natural_t)) ! 236: ! 237: #define PROCESSOR_SET_LOAD_INFO 4 /* scheduling statistics */ ! 238: ! 239: struct processor_set_load_info { ! 240: int task_count; /* How many tasks */ ! 241: int thread_count; /* How many threads */ ! 242: integer_t load_average; /* Scaled */ ! 243: integer_t mach_factor; /* Scaled */ ! 244: }; ! 245: ! 246: typedef struct processor_set_load_info processor_set_load_info_data_t; ! 247: typedef struct processor_set_load_info *processor_set_load_info_t; ! 248: #define PROCESSOR_SET_LOAD_INFO_COUNT \ ! 249: (sizeof(processor_set_load_info_data_t)/sizeof(natural_t)) ! 250: ! 251: ! 252: /* ! 253: * New scheduling control interface ! 254: */ ! 255: #define PROCESSOR_SET_ENABLED_POLICIES 3 ! 256: #define PROCESSOR_SET_ENABLED_POLICIES_COUNT \ ! 257: (sizeof(policy_t)/sizeof(natural_t)) ! 258: ! 259: #define PROCESSOR_SET_TIMESHARE_DEFAULT 10 ! 260: #define PROCESSOR_SET_TIMESHARE_LIMITS 11 ! 261: ! 262: #define PROCESSOR_SET_RR_DEFAULT 20 ! 263: #define PROCESSOR_SET_RR_LIMITS 21 ! 264: ! 265: #define PROCESSOR_SET_FIFO_DEFAULT 30 ! 266: #define PROCESSOR_SET_FIFO_LIMITS 31 ! 267: ! 268: #endif /* _MACH_PROCESSOR_INFO_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.