|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright (c) 1993, 1994 NeXT Computer, Inc. ! 27: * ! 28: * Exported interface for Kernel Device Object. ! 29: * ! 30: * HISTORY ! 31: * ! 32: * 1 Jul 1994 ? at NeXT ! 33: * Modifications for shared interrupts. ! 34: * 27 Feb 1994 ? at NeXT ! 35: * Major rewrite. ! 36: * 3 Oct 1993 ? at NeXT ! 37: * Created. ! 38: */ ! 39: ! 40: #ifdef DRIVER_PRIVATE ! 41: ! 42: #import <mach/mach_types.h> ! 43: ! 44: #import <objc/Object.h> ! 45: ! 46: /* ! 47: * This object supports the ! 48: * delivery of hardware device ! 49: * interrupts via an IPC message ! 50: * sent to a port. ! 51: */ ! 52: ! 53: @interface KernDevice : Object ! 54: { ! 55: @private ! 56: void *_interruptPort; ! 57: id _interrupts; ! 58: id _deviceDescription; ! 59: } ! 60: ! 61: - initWithDeviceDescription: deviceDescription; ! 62: ! 63: - deviceDescription; ! 64: ! 65: - attachInterruptPort: (port_t)interruptPort; ! 66: - detachInterruptPort; ! 67: - interrupt: (int)index; ! 68: - interrupts; ! 69: ! 70: @end ! 71: ! 72: @interface KernDeviceInterrupt : Object ! 73: { ! 74: @private ! 75: id _busInterrupt; ! 76: id _lock; ! 77: void *_handler; ! 78: void *_handlerArgument; ! 79: void *_ipcMessage; ! 80: BOOL _isSuspended; ! 81: } ! 82: ! 83: - initWithInterruptPort: (void *)port; ! 84: ! 85: - attachToBusInterrupt: busInterrupt ! 86: withArgument: (void *)argument; ! 87: - attachToBusInterrupt: busInterrupt ! 88: withSpecialHandler: (void *)handler ! 89: argument: (void *)argument ! 90: atLevel: (int)level; ! 91: - detach; ! 92: ! 93: - suspend; ! 94: - resume; ! 95: ! 96: @end ! 97: ! 98: /* ! 99: * This primative is used ! 100: * to deliver an interrupt ! 101: * message to an IPC port ! 102: * from an interrupt handler. ! 103: * This routine is public API. ! 104: */ ! 105: ! 106: void ! 107: IOSendInterrupt( ! 108: void *interrupt, ! 109: void *state, ! 110: unsigned int msgId ! 111: ); ! 112: ! 113: /* ! 114: * These primatives provide the ! 115: * ability to manipulate a device ! 116: * interrupt from an interrupt ! 117: * handler. These only work ! 118: * correctly from inside a bone- ! 119: * fide interrupt handler. ! 120: */ ! 121: ! 122: void ! 123: IOEnableInterrupt( ! 124: void *interrupt ! 125: ); ! 126: ! 127: void ! 128: IODisableInterrupt( ! 129: void *interrupt ! 130: ); ! 131: ! 132: /* ! 133: * One of these primatives should ! 134: * be invoked to indicate the ! 135: * assertion of a hardware bus ! 136: * interrupt for an attached device ! 137: * interrupt. ! 138: */ ! 139: #if sparc ! 140: int ! 141: #else ! 142: void ! 143: #endif ! 144: KernDeviceInterruptDispatch( ! 145: KernDeviceInterrupt *interrupt, ! 146: void *state ! 147: ); ! 148: ! 149: void ! 150: KernDeviceInterruptDispatchShared( ! 151: KernDeviceInterrupt *interrupt, ! 152: void *state ! 153: ); ! 154: ! 155: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.