|
|
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: /* IOStubPrivate.h 1.0 02/07/91 (c) 1992 NeXT ! 25: * ! 26: * IOStubPrivate.h - Private data structures for IOStub device. ! 27: * ! 28: * HISTORY ! 29: * 19-Oct-92 Doug Mitchell at NeXT ! 30: * Created. ! 31: */ ! 32: ! 33: #import "IOStub.h" ! 34: #import <driverkit/deviceCommon.h> ! 35: #import <objc/objc.h> ! 36: #import <kernserv/queue.h> ! 37: #import <mach/mach_types.h> ! 38: #import <driverkit/DeviceUxpr.h> ! 39: ! 40: /* ! 41: * Operations performed by IOStub's I/O thread. ! 42: */ ! 43: enum stub_cmd {STUB_READ, STUB_WRITE, STUB_ABORT }; ! 44: ! 45: /* ! 46: * Representation of one I/O. This is generated by the device's exported ! 47: * methods and enqueued on IOQueue to be serviced by the I/O thread. ! 48: */ ! 49: typedef struct _IOBuf { ! 50: ! 51: enum stub_cmd cmd; /* op to perform */ ! 52: u_int offset; /* block # */ ! 53: u_int bytesReq; /* bytes to move */ ! 54: void *buf; /* where to r/w */ ! 55: u_int bytesXfr; /* bytes actually moved (RETURNED) */ ! 56: IOReturn status; /* result (RETURNED) */ ! 57: void *pending; /* if non-NULL, async request; this is ! 58: * used to ioComplete: the operation. ! 59: * For kernel version, this is actually ! 60: * a struct buf */ ! 61: id waitLock; /* NXConditionLock. Sync I/O waits ! 62: * on this. */ ! 63: vm_task_t client; /* address space of *buf */ ! 64: ! 65: /* ! 66: * Fields written by device-specific dispatch code. ! 67: */ ! 68: id device; /* instance which owns this I/O */ ! 69: int dirRead; /* Written by command-specific code. ! 70: * Specifies direction of data ! 71: * transfer. A hack which should go ! 72: * away with RO support. */ ! 73: /* ! 74: * Queueing fields. ! 75: */ ! 76: queue_chain_t ioChain; /* for linking on IOQueue.queue */ ! 77: ! 78: } IOBuf; ! 79: ! 80: /* ! 81: * Values for IOQueue.queueLock condition variable. ! 82: */ ! 83: #define NO_WORK_AVAILABLE 0 ! 84: #define WORK_AVAILABLE 1 ! 85: ! 86: /* ! 87: * bitmasks for xprMask. ! 88: */ ! 89: #define XPR_STUB 0x80000000 ! 90: ! 91: #define xpr_stub(x, a, b, c, d, e) \ ! 92: uxpr(XPR_IODEVICE_INDEX, XPR_STUB, x, a, b, c, d, e)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.