1/* 2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * @OSF_COPYRIGHT@ 30 */ 31/* 32 * Mach Operating System 33 * Copyright (c) 1991,1990,1989 Carnegie Mellon University 34 * All Rights Reserved. 35 * 36 * Permission to use, copy, modify and distribute this software and its 37 * documentation is hereby granted, provided that both the copyright 38 * notice and this permission notice appear in all copies of the 39 * software, derivative works or modified versions, and any portions 40 * thereof, and that both notices appear in supporting documentation. 41 * 42 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 43 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 44 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 45 * 46 * Carnegie Mellon requests users of this software to return to 47 * 48 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 49 * School of Computer Science 50 * Carnegie Mellon University 51 * Pittsburgh PA 15213-3890 52 * 53 * any improvements or extensions that they make and grant Carnegie Mellon 54 * the rights to redistribute these changes. 55 */ 56/* 57 */ 58/* 59 * Author: David B. Golub, Carnegie Mellon University 60 * Date: 3/89 61 */ 62 63#ifndef DEVICE_TYPES_H 64#define DEVICE_TYPES_H 65 66/* 67 * Types for device interface. 68 */ 69#include <mach/std_types.h> 70#include <mach/mach_types.h> 71#include <mach/message.h> 72#include <mach/port.h> 73 74/* 75 * IO buffer - out-of-line array of characters. 76 */ 77typedef char * io_buf_ptr_t; 78 79/* 80 * Some types for IOKit. 81 */ 82 83#ifdef IOKIT 84 85/* must match device_types.defs */ 86typedef char io_name_t[128]; 87typedef char io_string_t[512]; 88typedef char io_struct_inband_t[4096]; 89 90#if KERNEL 91typedef uint64_t io_user_scalar_t; 92typedef uint64_t io_user_reference_t; 93typedef int io_scalar_inband_t[16]; 94// must be the same type as OSAsyncReference 95typedef natural_t io_async_ref_t[8]; 96typedef io_user_scalar_t io_scalar_inband64_t[16]; 97typedef io_user_reference_t io_async_ref64_t[8]; 98#elif __LP64__ 99typedef uint64_t io_user_scalar_t; 100typedef uint64_t io_user_reference_t; 101typedef io_user_scalar_t io_scalar_inband_t[16]; 102typedef io_user_reference_t io_async_ref_t[8]; 103typedef io_user_scalar_t io_scalar_inband64_t[16]; 104typedef io_user_reference_t io_async_ref64_t[8]; 105#else 106typedef int io_user_scalar_t; 107typedef natural_t io_user_reference_t; 108typedef io_user_scalar_t io_scalar_inband_t[16]; 109typedef io_user_reference_t io_async_ref_t[8]; 110typedef uint64_t io_scalar_inband64_t[16]; 111typedef uint64_t io_async_ref64_t[8]; 112#endif // __LP64__ 113 114#ifdef MACH_KERNEL 115 116typedef struct IOObject * io_object_t; 117typedef io_object_t io_connect_t; 118 119extern void iokit_remove_reference( io_object_t obj ); 120 121extern io_object_t iokit_lookup_object_port( ipc_port_t port ); 122extern io_connect_t iokit_lookup_connect_port( ipc_port_t port ); 123 124extern ipc_port_t iokit_make_object_port( io_object_t obj ); 125extern ipc_port_t iokit_make_connect_port( io_connect_t obj ); 126 127extern boolean_t iokit_notify( mach_msg_header_t *msg ); 128 129#else 130 131#ifndef __IOKIT_PORTS_DEFINED__ 132#define __IOKIT_PORTS_DEFINED__ 133typedef mach_port_t io_object_t; 134#endif /* __IOKIT_PORTS_DEFINED__ */ 135 136#endif /* MACH_KERNEL */ 137 138#endif /* IOKIT */ 139 140#endif /* DEVICE_TYPES_H */ 141 142