]> git.saurik.com Git - apple/xnu.git/blob - iokit/Kernel/IODeviceMemory.cpp
8c8de82101380bde47bb94aa79b5ccc48cdc701f
[apple/xnu.git] / iokit / Kernel / IODeviceMemory.cpp
1 /*
2 * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_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. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24 #include <IOKit/IODeviceMemory.h>
25
26 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27
28 IODeviceMemory * IODeviceMemory::withRange(
29 IOPhysicalAddress start,
30 IOPhysicalLength length )
31 {
32 return( (IODeviceMemory *) IOMemoryDescriptor::withPhysicalAddress(
33 start, length, kIODirectionNone ));
34 }
35
36
37 IODeviceMemory * IODeviceMemory::withSubRange(
38 IODeviceMemory * of,
39 IOPhysicalAddress offset,
40 IOPhysicalLength length )
41 {
42 return( (IODeviceMemory *) IOMemoryDescriptor::withSubRange(
43 of, offset, length, kIODirectionNone ));
44 }
45
46
47 OSArray * IODeviceMemory::arrayFromList(
48 InitElement list[],
49 IOItemCount count )
50 {
51 OSArray * array;
52 IODeviceMemory * range;
53 IOItemCount i;
54
55 array = OSArray::withCapacity( count );
56 if( 0 == array )
57 return( 0);
58
59 for( i = 0; i < count; i++) {
60 range = IODeviceMemory::withRange( list[i].start, list[i].length );
61 if( range) {
62 range->setTag( list[i].tag );
63 array->setObject( range);
64 range->release();
65 } else {
66 array->release();
67 array = 0;
68 break;
69 }
70 }
71
72 return( array );
73 }
74