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#if PRIVATE 75#define IOKIT_SERVER_VERSION 20140421 76#endif 77 78 79/* 80 * IO buffer - out-of-line array of characters. 81 */ 82typedef char * io_buf_ptr_t; 83 84/* 85 * Some types for IOKit. 86 */ 87 88#ifdef IOKIT 89 90/* must match device_types.defs */ 91typedef char io_name_t[128]; 92typedef char io_string_t[512]; 93typedef char io_struct_inband_t[4096]; 94 95#if KERNEL 96typedef uint64_t io_user_scalar_t; 97typedef uint64_t io_user_reference_t; 98typedef int io_scalar_inband_t[16]; 99// must be the same type as OSAsyncReference 100typedef natural_t io_async_ref_t[8]; 101typedef io_user_scalar_t io_scalar_inband64_t[16]; 102typedef io_user_reference_t io_async_ref64_t[8]; 103#elif __LP64__ 104typedef uint64_t io_user_scalar_t; 105typedef uint64_t io_user_reference_t; 106typedef io_user_scalar_t io_scalar_inband_t[16]; 107typedef io_user_reference_t io_async_ref_t[8]; 108typedef io_user_scalar_t io_scalar_inband64_t[16]; 109typedef io_user_reference_t io_async_ref64_t[8]; 110#else 111typedef int io_user_scalar_t; 112typedef natural_t io_user_reference_t; 113typedef io_user_scalar_t io_scalar_inband_t[16]; 114typedef io_user_reference_t io_async_ref_t[8]; 115typedef uint64_t io_scalar_inband64_t[16]; 116typedef uint64_t io_async_ref64_t[8]; 117#endif // __LP64__ 118 119#ifdef MACH_KERNEL_PRIVATE 120 121typedef struct IOObject * io_object_t; 122typedef io_object_t io_connect_t; 123 124extern void iokit_remove_reference( io_object_t obj ); 125 126extern io_object_t iokit_lookup_object_port( ipc_port_t port ); 127extern io_connect_t iokit_lookup_connect_port( ipc_port_t port ); 128 129extern ipc_port_t iokit_make_object_port( io_object_t obj ); 130extern ipc_port_t iokit_make_connect_port( io_connect_t obj ); 131 132extern boolean_t iokit_notify( mach_msg_header_t *msg ); 133 134#else 135 136#ifndef __IOKIT_PORTS_DEFINED__ 137#define __IOKIT_PORTS_DEFINED__ 138typedef mach_port_t io_object_t; 139#endif /* __IOKIT_PORTS_DEFINED__ */ 140 141#endif /* MACH_KERNEL */ 142 143#endif /* IOKIT */ 144 145#endif /* DEVICE_TYPES_H */ 146 147