|
|
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.