Chameleon

Chameleon Svn Source Tree

Root/branches/Chimera/i386/include/IOKit/firewire/IOFWDCLProgram.h

1/*
2 * Copyright (c) 1998-2002 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/*
23 * Copyright (c) 1999-2002 Apple Computer, Inc. All rights reserved.
24 *
25 * HISTORY
26 *
27 */
28
29
30#ifndef _IOKIT_IOFWDCLPROGRAM_H
31#define _IOKIT_IOFWDCLPROGRAM_H
32
33#include <libkern/c++/OSObject.h>
34#include <IOKit/firewire/IOFireWireFamilyCommon.h>
35#include <IOKit/firewire/IOFireWireBus.h>
36#include <IOKit/IOMemoryCursor.h>
37
38/*! @class IODCLProgram
39*/
40class IODCLProgram : public OSObject
41{
42 OSDeclareAbstractStructors(IODCLProgram)
43
44private :
45
46void * reserved0 ;//fDCLTaskToKernel;
47void * reserved1 ;//fDataTaskToKernel;
48void * reserved2 ;//fDataBase;
49void * reserved3 ;//IOMemoryDescriptor *fDCLDesc;
50IOMemoryMap *fBufferMem ;
51void * reserved5 ;//IOMemoryCursor *fDataCursor;
52
53protected:
54
55/*! @struct ExpansionData
56@discussion This structure will be used to expand the capablilties of the class in the future.
57*/
58struct ExpansionData
59{
60IOFWIsochResourceFlagsresourceFlags ;
61};
62
63/*! @var reserved
64Reserved for future use. (Internal use only) */
65ExpansionData *fExpansionData ;
66
67public :
68
69virtual voidsetIsochResourceFlags ( IOFWIsochResourceFlags flags ) ;// formerly getPhysicalSegs()
70IOFWIsochResourceFlagsgetIsochResourceFlags () const ;
71
72protected:
73
74virtual void free () ;
75
76public:
77
78virtual bool init ( IOFireWireBus::DCLTaskInfo * info = NULL ) ;
79virtual IOReturn allocateHW (
80IOFWSpeed speed,
81UInt32 chan) = 0;
82virtual IOReturn releaseHW () = 0;
83virtual IOReturn compile (
84IOFWSpeed speed,
85UInt32 chan) = 0;
86virtual IOReturn notify (
87IOFWDCLNotificationTypenotificationType,
88DCLCommand ** dclCommandList,
89UInt32 numDCLCommands ) = 0;
90virtual IOReturn start () = 0;
91virtual void stop () = 0;
92virtual IOReturn pause ();
93virtual IOReturn resume ();
94
95virtual voidsetForceStopProc(
96IOFWIsochChannel::ForceStopNotificationProc proc,
97void * refCon,
98IOFWIsochChannel *channel ) ;
99protected :
100
101voidgenerateBufferMap( DCLCommand * program ) ;
102IOReturnvirtualToPhysical(
103IOVirtualRangeranges[],
104unsignedrangeCount,
105IOMemoryCursor::IOPhysicalSegmentoutSegments[],
106unsigned &outPhysicalSegmentCount,
107unsignedmaxSegments ) ;
108
109public :
110
111IOMemoryMap *getBufferMap() const ;
112
113public :
114
115// close/open isoch workloop gate...
116// clients should not need to call these.
117virtual voidcloseGate() = 0 ;
118virtual voidopenGate() = 0 ;
119
120virtual IOReturnsynchronizeWithIO() = 0 ;
121
122private:
123
124OSMetaClassDeclareReservedUsed(IODCLProgram, 0);
125OSMetaClassDeclareReservedUsed(IODCLProgram, 1);
126OSMetaClassDeclareReservedUnused(IODCLProgram, 2);
127OSMetaClassDeclareReservedUnused(IODCLProgram, 3);
128OSMetaClassDeclareReservedUnused(IODCLProgram, 4);
129
130};
131
132#endif /* ! _IOKIT_IOFWDCLPROGRAM_H */
133
134

Archive Download this file

Revision: 1340