1*c1dac77fSApple OSS Distributions /* 2*c1dac77fSApple OSS Distributions * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. 3*c1dac77fSApple OSS Distributions * 4*c1dac77fSApple OSS Distributions * @APPLE_LICENSE_HEADER_START@ 5*c1dac77fSApple OSS Distributions * 6*c1dac77fSApple OSS Distributions * The contents of this file constitute Original Code as defined in and 7*c1dac77fSApple OSS Distributions * are subject to the Apple Public Source License Version 1.1 (the 8*c1dac77fSApple OSS Distributions * "License"). You may not use this file except in compliance with the 9*c1dac77fSApple OSS Distributions * License. Please obtain a copy of the License at 10*c1dac77fSApple OSS Distributions * http://www.apple.com/publicsource and read it before using this file. 11*c1dac77fSApple OSS Distributions * 12*c1dac77fSApple OSS Distributions * This Original Code and all software distributed under the License are 13*c1dac77fSApple OSS Distributions * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14*c1dac77fSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15*c1dac77fSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16*c1dac77fSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17*c1dac77fSApple OSS Distributions * License for the specific language governing rights and limitations 18*c1dac77fSApple OSS Distributions * under the License. 19*c1dac77fSApple OSS Distributions * 20*c1dac77fSApple OSS Distributions * @APPLE_LICENSE_HEADER_END@ 21*c1dac77fSApple OSS Distributions */ 22*c1dac77fSApple OSS Distributions /* 23*c1dac77fSApple OSS Distributions * Copyright (c) 1998 Apple Computer, Inc. All rights reserved. 24*c1dac77fSApple OSS Distributions * 25*c1dac77fSApple OSS Distributions * HISTORY 26*c1dac77fSApple OSS Distributions * 23 Nov 98 sdouglas created. 27*c1dac77fSApple OSS Distributions * 30 Sep 99 sdouglas, merged IODeviceMemory into IOMemoryDescriptor. 28*c1dac77fSApple OSS Distributions */ 29*c1dac77fSApple OSS Distributions 30*c1dac77fSApple OSS Distributions #include <IOKit/IODeviceMemory.h> 31*c1dac77fSApple OSS Distributions 32*c1dac77fSApple OSS Distributions /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 33*c1dac77fSApple OSS Distributions 34*c1dac77fSApple OSS Distributions IODeviceMemory * IODeviceMemory::withRange( 35*c1dac77fSApple OSS Distributions IOPhysicalAddress start, 36*c1dac77fSApple OSS Distributions IOPhysicalLength length ) 37*c1dac77fSApple OSS Distributions { 38*c1dac77fSApple OSS Distributions return( (IODeviceMemory *) IOMemoryDescriptor::withPhysicalAddress( 39*c1dac77fSApple OSS Distributions start, length, kIODirectionNone )); 40*c1dac77fSApple OSS Distributions } 41*c1dac77fSApple OSS Distributions 42*c1dac77fSApple OSS Distributions 43*c1dac77fSApple OSS Distributions IODeviceMemory * IODeviceMemory::withSubRange( 44*c1dac77fSApple OSS Distributions IODeviceMemory * of, 45*c1dac77fSApple OSS Distributions IOPhysicalAddress offset, 46*c1dac77fSApple OSS Distributions IOPhysicalLength length ) 47*c1dac77fSApple OSS Distributions { 48*c1dac77fSApple OSS Distributions return( (IODeviceMemory *) IOMemoryDescriptor::withSubRange( 49*c1dac77fSApple OSS Distributions of, offset, length, kIODirectionNone )); 50*c1dac77fSApple OSS Distributions } 51*c1dac77fSApple OSS Distributions 52*c1dac77fSApple OSS Distributions 53*c1dac77fSApple OSS Distributions OSArray * IODeviceMemory::arrayFromList( 54*c1dac77fSApple OSS Distributions InitElement list[], 55*c1dac77fSApple OSS Distributions IOItemCount count ) 56*c1dac77fSApple OSS Distributions { 57*c1dac77fSApple OSS Distributions OSArray * array; 58*c1dac77fSApple OSS Distributions IODeviceMemory * range; 59*c1dac77fSApple OSS Distributions IOItemCount i; 60*c1dac77fSApple OSS Distributions 61*c1dac77fSApple OSS Distributions array = OSArray::withCapacity( count ); 62*c1dac77fSApple OSS Distributions if( 0 == array ) 63*c1dac77fSApple OSS Distributions return( 0); 64*c1dac77fSApple OSS Distributions 65*c1dac77fSApple OSS Distributions for( i = 0; i < count; i++) { 66*c1dac77fSApple OSS Distributions range = IODeviceMemory::withRange( list[i].start, list[i].length ); 67*c1dac77fSApple OSS Distributions if( range) { 68*c1dac77fSApple OSS Distributions range->setTag( list[i].tag ); 69*c1dac77fSApple OSS Distributions array->setObject( range); 70*c1dac77fSApple OSS Distributions range->release(); 71*c1dac77fSApple OSS Distributions } else { 72*c1dac77fSApple OSS Distributions array->release(); 73*c1dac77fSApple OSS Distributions array = 0; 74*c1dac77fSApple OSS Distributions break; 75*c1dac77fSApple OSS Distributions } 76*c1dac77fSApple OSS Distributions } 77*c1dac77fSApple OSS Distributions 78*c1dac77fSApple OSS Distributions return( array ); 79*c1dac77fSApple OSS Distributions } 80*c1dac77fSApple OSS Distributions 81