|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24: /*
25: * Copyright (c) 1993 NeXT Computer, Inc.
26: *
27: * PCMCIA device description class.
28: *
29: * HISTORY
30: *
31: * 10 August 1994 Curtis Galloway at NeXT
32: * Created.
33: */
34:
35: #define KERNEL_PRIVATE 1
36:
37: #import <driverkit/KernDeviceDescription.h>
38: #import <driverkit/i386/IOPCMCIADeviceDescription.h>
39: #import <driverkit/i386/IOPCMCIADeviceDescriptionPrivate.h>
40: #import <driverkit/IODeviceDescriptionPrivate.h>
41: #import <driverkit/i386/IOEISADeviceDescriptionPrivate.h>
42: #import <driverkit/i386/directDevice.h>
43: #import <driverkit/i386/IOPCMCIATuple.h>
44: #import <driverkit/i386/IOPCMCIATuplePrivate.h>
45: #import <driverkit/i386/PCMCIAKernBus.h>
46:
47: struct _pcmcia_private {
48: unsigned tupleCount;
49: id *tupleList;
50: };
51:
52: @implementation IOPCMCIADeviceDescription(Private)
53:
54: - _initWithDelegate: delegate
55: {
56: struct _pcmcia_private *private;
57:
58: [super _initWithDelegate:delegate];
59: private = _pcmcia_private =
60: (struct _pcmcia_private *)IOMalloc(sizeof(struct _pcmcia_private));
61: private->tupleCount = 0;
62: private->tupleList = NULL;
63: return self;
64: }
65:
66: @end
67:
68: @implementation IOPCMCIADeviceDescription
69:
70: - free
71: {
72: struct _pcmcia_private *private =
73: (struct _pcmcia_private *)_pcmcia_private;
74:
75: if (private->tupleList) {
76: int i;
77: for (i=0; i < private->tupleCount; i++) {
78: [private->tupleList[i] free];
79: }
80: IOFree(private->tupleList, private->tupleCount * sizeof(id));
81: }
82: IOFree(private, sizeof(struct _pcmcia_private));
83: return [super free];
84: }
85:
86: - (unsigned) numTuples
87: {
88: struct _pcmcia_private *private =
89: (struct _pcmcia_private *)_pcmcia_private;
90:
91: if (private->tupleCount == 0) {
92: (void)[self tupleList];
93: }
94: return private->tupleCount;
95: }
96:
97: - (id *) tupleList
98: {
99: struct _pcmcia_private *private =
100: (struct _pcmcia_private *)_pcmcia_private;
101: id list;
102: int i;
103:
104: if (private->tupleList == NULL) {
105: list = [[self _delegate] resourcesForKey:PCMCIA_TUPLE_LIST];
106: if (list) {
107: private->tupleCount = [list count];
108: private->tupleList =
109: (id *)IOMalloc(private->tupleCount * sizeof(id));
110: for (i=0; i<private->tupleCount; i++) {
111: id ioTuple, tuple;
112:
113: tuple = [list objectAt:i];
114: ioTuple = [[IOPCMCIATuple alloc] initWithKernTuple:tuple];
115: private->tupleList[i] = ioTuple;
116: }
117: }
118: }
119: return private->tupleList;
120: }
121:
122: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.