xref: /xnu-11215/iokit/Kernel/IODeviceMemory.cpp (revision c1dac77f)
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