Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/IOKit/IOSubMemoryDescriptor.h

Source at commit 1129 created 12 years 11 months ago.
By meklort, Change options.o so that it reloads the system config as well. Also change it so that it uses that config for variables (NOTE: if the calue exists in chameleonConfig, it's used instead.
1/*
2 * Copyright (c) 1998-2000 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#ifndef _IOSUBMEMORYDESCRIPTOR_H
30#define _IOSUBMEMORYDESCRIPTOR_H
31
32#include <IOKit/IOMemoryDescriptor.h>
33
34/*! @class IOSubMemoryDescriptor : public IOMemoryDescriptor
35 @abstract The IOSubMemoryDescriptor object describes a memory area made up of a portion of another IOMemoryDescriptor.
36 @discussion The IOSubMemoryDescriptor object represents a subrange of memory, specified as a portion of another IOMemoryDescriptor. */
37
38class IOSubMemoryDescriptor : public IOMemoryDescriptor
39{
40 OSDeclareDefaultStructors(IOSubMemoryDescriptor);
41
42protected:
43 IOMemoryDescriptor * _parent;
44 IOByteCount _start;
45
46 virtual void free();
47
48public:
49/*! @function withSubRange
50 @abstract Create an IOMemoryDescriptor to describe a subrange of an existing descriptor.
51 @discussion This method creates and initializes an IOMemoryDescriptor for memory consisting of a subrange of the specified memory descriptor. The parent memory descriptor is retained by the new descriptor.
52 @param of The parent IOMemoryDescriptor of which a subrange is to be used for the new descriptor, which will be retained by the subrange IOMemoryDescriptor.
53 @param offset A byte offset into the parent memory descriptor's memory.
54 @param length The length of the subrange.
55 @param options
56 kIOMemoryDirectionMask (options:direction)This nibble indicates the I/O direction to be associated with the descriptor, which may affect the operation of the prepare and complete methods on some architectures.
57 @result The created IOMemoryDescriptor on success, to be released by the caller, or zero on failure. */
58
59 static IOSubMemoryDescriptor *withSubRange(IOMemoryDescriptor *of,
60 IOByteCount offset,
61 IOByteCount length,
62 IOOptionBits options);
63
64 /*
65 * Initialize or reinitialize an IOSubMemoryDescriptor to describe
66 * a subrange of an existing descriptor.
67 *
68 * An IOSubMemoryDescriptor can be re-used by calling initSubRange
69 * again on an existing instance -- note that this behavior is not
70 * commonly supported in other IOKit classes, although it is here.
71 */
72 virtual bool initSubRange( IOMemoryDescriptor * parent,
73IOByteCount offset, IOByteCount length,
74IODirection withDirection );
75
76 /*
77 * IOMemoryDescriptor required methods
78 */
79
80 virtual addr64_t getPhysicalSegment( IOByteCount offset,
81 IOByteCount * length,
82 IOOptionBits options = 0 );
83
84 virtual IOReturn prepare(IODirection forDirection = kIODirectionNone);
85
86 virtual IOReturn complete(IODirection forDirection = kIODirectionNone);
87
88#ifdef __LP64__
89 virtual
90#endif /* __LP64__ */
91 IOReturn redirect( task_t safeTask, bool redirect );
92
93 virtual IOReturn setPurgeable( IOOptionBits newState,
94 IOOptionBits * oldState );
95
96 // support map() on kIOMemoryTypeVirtual without prepare()
97 virtual IOMemoryMap * makeMapping(
98IOMemoryDescriptor *owner,
99task_tintoTask,
100IOVirtualAddressatAddress,
101IOOptionBitsoptions,
102IOByteCountoffset,
103IOByteCountlength );
104
105virtual uint64_t getPreparationID( void );
106
107};
108
109#endif /* !_IOSUBMEMORYDESCRIPTOR_H */
110

Archive Download this file

Revision: 1129