|
|
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: * Mach Operating System ! 27: * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University ! 28: * All Rights Reserved. ! 29: * ! 30: * Permission to use, copy, modify and distribute this software and its ! 31: * documentation is hereby granted, provided that both the copyright ! 32: * notice and this permission notice appear in all copies of the ! 33: * software, derivative works or modified versions, and any portions ! 34: * thereof, and that both notices appear in supporting documentation. ! 35: * ! 36: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ! 37: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ! 38: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ! 39: * ! 40: * Carnegie Mellon requests users of this software to return to ! 41: * ! 42: * Software Distribution Coordinator or [email protected] ! 43: * School of Computer Science ! 44: * Carnegie Mellon University ! 45: * Pittsburgh PA 15213-3890 ! 46: * ! 47: * any improvements or extensions that they make and grant Carnegie Mellon ! 48: * the rights to redistribute these changes. ! 49: */ ! 50: /* ! 51: */ ! 52: ! 53: /* ! 54: * Matchmaker definitions file for Mach kernel interface. ! 55: */ ! 56: subsystem ! 57: #if KERNEL_USER ! 58: KernelUser ! 59: #endif /* KERNEL_USER */ ! 60: #if KERNEL_SERVER ! 61: KernelServer ! 62: #endif /* KERNEL_SERVER */ ! 63: host_priv 400; ! 64: ! 65: #ifdef KERNEL_USER ! 66: userprefix r_; ! 67: #endif /* KERNEL_USER */ ! 68: ! 69: #include <mach/std_types.defs> ! 70: #include <mach/mach_types.defs> ! 71: #include <mach/clock_types.defs> ! 72: #include <mach_debug/mach_debug_types.defs> ! 73: ! 74: /* ! 75: * Get boot configuration information from kernel. ! 76: */ ! 77: routine host_get_boot_info( ! 78: host_priv : host_priv_t; ! 79: out boot_info : kernel_boot_info_t); ! 80: ! 81: /* ! 82: * Reboot this host. ! 83: * Only available to privileged users. ! 84: */ ! 85: routine host_reboot( ! 86: host_priv : host_priv_t; ! 87: options : int); ! 88: ! 89: ! 90: /* ! 91: * Return statistics from this host. ! 92: */ ! 93: routine host_statistics( ! 94: host_priv : host_priv_t; ! 95: flavor : host_flavor_t; ! 96: out host_info_out : host_info_t, CountInOut); ! 97: ! 98: /* ! 99: * Sets the default memory manager, the port to which ! 100: * newly-created temporary memory objects are delivered. ! 101: * [See (memory_object_default)memory_object_create.] ! 102: * Also sets the default cluster size used for pagein/pageout ! 103: * to this port. ! 104: * The old memory manager port is returned. ! 105: */ ! 106: routine host_default_memory_manager( ! 107: host_priv : host_priv_t; ! 108: inout default_manager : memory_object_default_t = ! 109: MACH_MSG_TYPE_MAKE_SEND; ! 110: cluster_size : vm_size_t); ! 111: ! 112: ! 113: /* ! 114: * Specify that the range of the virtual address space ! 115: * of the target task must not cause page faults for ! 116: * the indicated accesses. ! 117: * ! 118: * [ To unwire the pages, specify VM_PROT_NONE. ] ! 119: */ ! 120: routine vm_wire( ! 121: host_priv : host_priv_t; ! 122: task : vm_map_t; ! 123: address : vm_address_t; ! 124: size : vm_size_t; ! 125: access : vm_prot_t); ! 126: ! 127: /* ! 128: * Specify that the target thread must always be able ! 129: * to run and to allocate memory. ! 130: */ ! 131: routine thread_wire( ! 132: host_priv : host_priv_t; ! 133: thread : thread_act_t; ! 134: wired : boolean_t); ! 135: ! 136: /* ! 137: * Allocate zero-filled, wired, contiguous physical memory ! 138: * in the address space of the target task, either at the ! 139: * specified address, or wherever space can be found (if ! 140: * anywhere is TRUE), of the specified size. The address ! 141: * at which the allocation actually took place is returned. ! 142: * All pages will be entered into the task's pmap immediately, ! 143: * with VM_PROT_ALL. ! 144: * ! 145: * In addition to all the failure modes of its cousin, ! 146: * vm_allocate, this call may also fail if insufficient ! 147: * contiguous memory exists to satisfy the request. ! 148: * ! 149: * Memory obtained from this call should be freed the ! 150: * normal way, via vm_deallocate. ! 151: * ! 152: * N.B. This is an EXPERIMENTAL interface! ! 153: */ ! 154: routine vm_allocate_cpm( ! 155: host_priv : host_priv_t; ! 156: task : vm_map_t; ! 157: inout address : vm_address_t; ! 158: size : vm_size_t; ! 159: anywhere : boolean_t); ! 160: ! 161: /* ! 162: * Get list of processors on this host. ! 163: */ ! 164: routine host_processors( ! 165: host_priv : host_priv_t; ! 166: out processor_list : processor_array_t); ! 167: ! 168: ! 169: /* ! 170: * Get control port for a processor set. ! 171: * Privileged. ! 172: */ ! 173: routine host_get_clock_control( ! 174: host_priv : host_priv_t; ! 175: clock_id : clock_id_t; ! 176: out clock_ctrl : clock_ctrl_t); ! 177: ! 178: ! 179: /* ! 180: * kernel module interface ! 181: * ! 182: * see mach/kmod.h: ! 183: */ ! 184: routine kmod_create( ! 185: host_priv : host_priv_t; ! 186: info : vm_address_t; ! 187: out module : kmod_t); ! 188: ! 189: routine kmod_destroy( ! 190: host_priv : host_priv_t; ! 191: module : kmod_t); ! 192: ! 193: routine kmod_control( ! 194: host_priv : host_priv_t; ! 195: module : kmod_t; ! 196: flavor : kmod_control_flavor_t; ! 197: inout data : kmod_args_t); ! 198: ! 199: /* ! 200: * Get a given special port for a given node. ! 201: * Norma special ports are defined in norma_special_ports.h; ! 202: * examples include the master device port. ! 203: * There are a limited number of slots available for system servers. ! 204: */ ! 205: routine host_get_special_port( ! 206: host_priv : host_priv_t; ! 207: node : int; ! 208: which : int; ! 209: out port : mach_port_t); ! 210: ! 211: /* ! 212: * Set a given special port for a given node. ! 213: * See norma_get_special_port. ! 214: */ ! 215: routine host_set_special_port( ! 216: host_priv : host_priv_t; ! 217: which : int; ! 218: port : mach_port_t); ! 219: ! 220: /* ! 221: * ETAP: etap_mon_reconfig ! 222: * ! 223: * The etap_mon_reconfig message allows the single server to change the ! 224: * size of the ETAP monitoring buffer. ! 225: * ! 226: * o New number of monitor buffer entries ! 227: */ ! 228: routine etap_mon_reconfig( ! 229: host_priv : host_priv_t; ! 230: nentries : int); ! 231: ! 232: routine etap_new_probe( ! 233: host_priv : host_priv_t; ! 234: name : vm_address_t; ! 235: namlen : vm_size_t; ! 236: trace_on : boolean_t; ! 237: id : vm_address_t); ! 238: ! 239: /* ! 240: * ETAP: etap_get_info ! 241: * ! 242: * The etap_get_info message provides the single server with ! 243: * event trace analysis package configuration information. ! 244: * ! 245: * o Number of event table entries ! 246: * o Number of subsystem table entries ! 247: * o Offset into page containing event table ! 248: * o Offset into page containing subsystem table ! 249: * o Cumulative buffer interval width ! 250: * o Monitor buffer size ! 251: * o Number of monitor buffer entries ! 252: * o Number of monitor buffers (one per cpu) ! 253: */ ! 254: routine etap_get_info( ! 255: host_priv : host_priv_t; ! 256: out et_entries : int; ! 257: out st_entries : int; ! 258: out et_offset : vm_offset_t; ! 259: out st_offset : vm_offset_t; ! 260: out cb_width : int; ! 261: out mb_size : int; ! 262: out mb_entries : int; ! 263: out mb_cpus : int); ! 264: ! 265: /* ! 266: * Loads a symbol table for an external file into the kernel debugger. ! 267: * The symbol table data is an array of characters. It is assumed that ! 268: * the caller and the kernel debugger agree on its format. ! 269: * This call is only supported in MACH_DEBUG and MACH_KDB kernels, ! 270: * otherwise KERN_FAILURE is returned. ! 271: */ ! 272: routine host_load_symbol_table( ! 273: host : host_priv_t; ! 274: task : task_t; ! 275: name : symtab_name_t; ! 276: symtab : pointer_t); ! 277: ! 278: /* ! 279: * Make the target task swappable or unswappable. ! 280: */ ! 281: routine task_swappable( ! 282: host_priv : host_priv_t; ! 283: target_task : task_t; ! 284: make_swappable : boolean_t); ! 285: ! 286: /* ! 287: * JMM - Keep all processor_set related items at the end for easy ! 288: * removal. ! 289: */ ! 290: /* ! 291: * List all processor sets on host. ! 292: */ ! 293: routine host_processor_sets( ! 294: host_priv : host_priv_t; ! 295: out processor_sets : processor_set_name_array_t); ! 296: ! 297: /* ! 298: * Get control port for a processor set. ! 299: */ ! 300: routine host_processor_set_priv( ! 301: host_priv : host_priv_t; ! 302: set_name : processor_set_name_t; ! 303: out set : processor_set_t); ! 304: /* ! 305: * Set the dynamic_pager control port. Other entities ! 306: * can request a send right to this port to talk with ! 307: * the dynamic_pager utility, setting behavioral parameters ! 308: * within the dynamic pager and getting low/high backing store ! 309: * resource notifications. ! 310: */ ! 311: routine set_dp_control_port( ! 312: host : host_priv_t; ! 313: in control_port : mach_port_t); ! 314: ! 315: /* ! 316: * Get the dynamic_pager control port. This port ! 317: * allows the holder to talk directly with the dynamic ! 318: * pager utility. ! 319: */ ! 320: routine get_dp_control_port( ! 321: host : host_priv_t; ! 322: out contorl_port :mach_port_t); ! 323: ! 324:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.