Chameleon Applications

Chameleon Applications Svn Source Tree

Root/branches/iFabio/Chameleon/i386/include/IOKit/ata/ATADeviceNub.h

Source at commit 296 created 12 years 10 months ago.
By ifabio, add i386 folder
1/*
2 * Copyright (c) 1998-2008 Apple 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/*!
24 @header ATADeviceNub.h
25 @abstract A concrete implementation of IOATADevice.
26 */
27
28#ifndef _ATADEVICENUB_H
29#define _ATADEVICENUB_H
30
31#include <IOKit/IOTypes.h>
32#include "IOATATypes.h"
33#include "IOATADevice.h"
34#include "IOATAController.h"
35
36#include "IOATABusCommand.h"
37
38
39/*!
40@class ATADeviceNub
41@abstract ATADeviceNub is a concrete implementation of IOATADevice.
42@discussion clients of IOATA (disk drivers) should use the interface presented
43by IOATADevice. Concrete nubs are private to the IOATA family and
44specific subclasses of IOATADevice are instantiated by controller
45drivers to provide the abstract interface to clients.
46
47*/
48class ATADeviceNub : public IOATADevice
49{
50 OSDeclareDefaultStructors(ATADeviceNub);
51
52public:
53
54/*!@function ataDeviceNub
55@abstract static creator function - used by IOATAControllers to create nubs.
56*/
57static ATADeviceNub* ataDeviceNub( IOATAController* provider, ataUnitID unit, ataDeviceType devType);
58
59/*!@function attach
60@abstract override of IOService method.
61*/
62 virtual bool attach(IOService* provider );
63
64
65 // overrides from IOATADevice to provide actual client interface
66
67
68/*!@function executeCommand
69@abstract Submit IO requests
70*/
71 virtual IOReturn executeCommand(IOATACommand* command);
72
73// create and destroy IOATACommands
74/*!@function allocCommand
75@abstract create command objects for clients.
76*/
77virtual IOATACommand*allocCommand( void );
78
79/*!@function freeCommand
80@abstract Clients use this method to dispose of command objects.
81*/
82virtual void freeCommand( IOATACommand* inCommand);
83
84
85protected:
86
87 /*!@function init
88@abstract used after creating the nub.
89*/
90 virtual bool init(IOATAController* provider, ataUnitID unit, ataDeviceType devType);
91
92/*!@function publishProperties
93@abstract publish the nub's properties in the device tree.
94*/
95virtual void publishProperties( void );
96
97/*!@function publishBusProperties
98@abstract puts info about this device's bus capability in the device tree.
99*/
100virtual void publishBusProperties(void);
101
102/*!@function publishVendorProperties
103@abstract will be deprecated.
104*/
105virtual void publishVendorProperties( void );
106
107/*!@function getDeviceID
108@abstract get the unit id of this drive (0 or 1)
109*/
110virtual IOReturn getDeviceID(void);
111
112/*!@function MyATACallback
113@abstract to be deprecated.
114*/
115static void MyATACallback(IOATACommand* command );
116
117/*!@function processCallback
118@abstract to be deprecated.
119*/
120void processCallback(IOATACommand* command );
121
122/*!@function swapBytes16
123@abstract to be deprecated.
124*/
125void swapBytes16( UInt8* dataBuffer, IOByteCount length);
126
127 UInt8* buffer;
128
129protected:
130/*! @struct ExpansionData
131 @discussion This structure will be used to expand the capablilties of the ATADeviceNub in the future.
132 */
133 struct ExpansionData { };
134
135/*! @var reserved
136 Reserved for future use. (Internal use only) */
137 ExpansionData *reserved;
138
139private:
140 OSMetaClassDeclareReservedUnused(ATADeviceNub, 0);
141 OSMetaClassDeclareReservedUnused(ATADeviceNub, 1);
142 OSMetaClassDeclareReservedUnused(ATADeviceNub, 2);
143 OSMetaClassDeclareReservedUnused(ATADeviceNub, 3);
144 OSMetaClassDeclareReservedUnused(ATADeviceNub, 4);
145 OSMetaClassDeclareReservedUnused(ATADeviceNub, 5);
146 OSMetaClassDeclareReservedUnused(ATADeviceNub, 6);
147 OSMetaClassDeclareReservedUnused(ATADeviceNub, 7);
148 OSMetaClassDeclareReservedUnused(ATADeviceNub, 8);
149 OSMetaClassDeclareReservedUnused(ATADeviceNub, 9);
150 OSMetaClassDeclareReservedUnused(ATADeviceNub, 10);
151 OSMetaClassDeclareReservedUnused(ATADeviceNub, 11);
152 OSMetaClassDeclareReservedUnused(ATADeviceNub, 12);
153 OSMetaClassDeclareReservedUnused(ATADeviceNub, 13);
154 OSMetaClassDeclareReservedUnused(ATADeviceNub, 14);
155 OSMetaClassDeclareReservedUnused(ATADeviceNub, 15);
156 OSMetaClassDeclareReservedUnused(ATADeviceNub, 16);
157 OSMetaClassDeclareReservedUnused(ATADeviceNub, 17);
158 OSMetaClassDeclareReservedUnused(ATADeviceNub, 18);
159 OSMetaClassDeclareReservedUnused(ATADeviceNub, 19);
160 OSMetaClassDeclareReservedUnused(ATADeviceNub, 20);
161
162};
163
164#endif /* !_IOATABUSNUB_H */
165

Archive Download this file

Revision: 296