FreeBSD/Linux Kernel Cross Reference
sys/sys/aac_ioctl.h
1 /*-
2 * Copyright (c) 2000 Michael Smith
3 * Copyright (c) 2000 Scott Long
4 * Copyright (c) 2000 BSDi
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 * $FreeBSD$
29 */
30
31 /*
32 * Command queue statistics
33 */
34 #define AACQ_FREE 0
35 #define AACQ_BIO 1
36 #define AACQ_READY 2
37 #define AACQ_BUSY 3
38 #define AACQ_COUNT 4 /* total number of queues */
39
40 struct aac_qstat {
41 u_int32_t q_length;
42 u_int32_t q_max;
43 };
44
45 /*
46 * Statistics request
47 */
48 union aac_statrequest {
49 u_int32_t as_item;
50 struct aac_qstat as_qstat;
51 };
52
53 #define AACIO_STATS _IOWR('T', 101, union aac_statrequest)
54
55 /*
56 * Ioctl commands likely to be submitted from a Linux management application.
57 * These bit encodings are actually descended from Windows NT. Ick.
58 */
59
60 #define CTL_CODE(devType, func, meth, acc) (((devType) << 16) | ((acc) << 14) | ((func) << 2) | (meth))
61 #define METHOD_BUFFERED 0
62 #define METHOD_IN_DIRECT 1
63 #define METHOD_OUT_DIRECT 2
64 #define METHOD_NEITHER 3
65 #define FILE_ANY_ACCESS 0
66 #define FILE_READ_ACCESS ( 0x0001 )
67 #define FILE_WRITE_ACCESS ( 0x0002 )
68 #define FILE_DEVICE_CONTROLLER 0x00000004
69
70 #define FSACTL_LNX_SENDFIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2050, \
71 METHOD_BUFFERED, FILE_ANY_ACCESS)
72 #define FSACTL_LNX_GET_COMM_PERF_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, 2084, \
73 METHOD_BUFFERED, FILE_ANY_ACCESS)
74 #define FSACTL_LNX_OPENCLS_COMM_PERF_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, \
75 2085, METHOD_BUFFERED, FILE_ANY_ACCESS)
76 #define FSACTL_LNX_OPEN_GET_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2100, \
77 METHOD_BUFFERED, FILE_ANY_ACCESS)
78 #define FSACTL_LNX_GET_NEXT_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2101, \
79 METHOD_BUFFERED, FILE_ANY_ACCESS)
80 #define FSACTL_LNX_CLOSE_GET_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, \
81 2102, METHOD_BUFFERED, FILE_ANY_ACCESS)
82 #define FSACTL_LNX_CLOSE_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2104, \
83 METHOD_BUFFERED, FILE_ANY_ACCESS)
84 #define FSACTL_LNX_OPEN_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2105, \
85 METHOD_BUFFERED, FILE_ANY_ACCESS)
86 #define FSACTL_LNX_MINIPORT_REV_CHECK CTL_CODE(FILE_DEVICE_CONTROLLER, 2107, \
87 METHOD_BUFFERED, FILE_ANY_ACCESS)
88 #define FSACTL_LNX_QUERY_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2113, \
89 METHOD_BUFFERED, FILE_ANY_ACCESS)
90 #define FSACTL_LNX_GET_PCI_INFO CTL_CODE(FILE_DEVICE_CONTROLLER, 2119, \
91 METHOD_BUFFERED, FILE_ANY_ACCESS)
92 #define FSACTL_LNX_FORCE_DELETE_DISK CTL_CODE(FILE_DEVICE_CONTROLLER, 2120, \
93 METHOD_NEITHER, FILE_ANY_ACCESS)
94 #define FSACTL_LNX_AIF_THREAD CTL_CODE(FILE_DEVICE_CONTROLLER, 2127, \
95 METHOD_NEITHER, FILE_ANY_ACCESS)
96
97 /* Why these don't follow the previous convention, I don't know */
98 #define FSACTL_LNX_NULL_IO_TEST 0x43
99 #define FSACTL_LNX_SIM_IO_TEST 0x53
100 #define FSACTL_LNX_DOWNLOAD 0x83
101 #define FSACTL_LNX_GET_VAR 0x93
102 #define FSACTL_LNX_SET_VAR 0xa3
103 #define FSACTL_LNX_GET_FIBTIMES 0xb3
104 #define FSACTL_LNX_ZERO_FIBTIMES 0xc3
105 #define FSACTL_LNX_DELETE_DISK 0x163
106 #define FSACTL_LNX_QUERY_DISK 0x173
107
108 /* Ok, here it gets really lame */
109 #define FSACTL_LNX_PROBE_CONTAINERS 2131 /* Just guessing */
110
111 /* Do the native version of the ioctls. Since the BSD encoding scheme
112 * conflicts with the 'standard' AAC encoding scheme, the resulting numbers
113 * will be different. The '8' comes from the fact that the previous scheme
114 * used 12 bits for the number, with the the 12th bit being the only set
115 * bit above bit 8. Thus the value of 8, with the lower 8 bits holding the
116 * command number. 9 is used for the odd overflow case.
117 */
118 #define FSACTL_SENDFIB _IO('8', 2)
119 #define FSACTL_GET_COMM_PERF_DATA _IO('8', 36)
120 #define FSACTL_OPENCLS_COMM_PERF_DATA _IO('8', 37)
121 #define FSACTL_OPEN_GET_ADAPTER_FIB _IO('8', 52)
122 #define FSACTL_GET_NEXT_ADAPTER_FIB _IO('8', 53)
123 #define FSACTL_CLOSE_GET_ADAPTER_FIB _IO('8', 54)
124 #define FSACTL_CLOSE_ADAPTER_CONFIG _IO('8', 56)
125 #define FSACTL_OPEN_ADAPTER_CONFIG _IO('8', 57)
126 #define FSACTL_MINIPORT_REV_CHECK _IO('8', 59)
127 #define FSACTL_QUERY_ADAPTER_CONFIG _IO('8', 65)
128 #define FSACTL_GET_PCI_INFO _IO('8', 71)
129 #define FSACTL_FORCE_DELETE_DISK _IO('8', 72)
130 #define FSACTL_AIF_THREAD _IO('8', 79)
131
132 #define FSACTL_NULL_IO_TEST _IO('8', 67)
133 #define FSACTL_SIM_IO_TEST _IO('8', 83)
134 #define FSACTL_DOWNLOAD _IO('8', 131)
135 #define FSACTL_GET_VAR _IO('8', 147)
136 #define FSACTL_SET_VAR _IO('8', 163)
137 #define FSACTL_GET_FIBTIMES _IO('8', 179)
138 #define FSACTL_ZERO_FIBTIMES _IO('8', 195)
139 #define FSACTL_DELETE_DISK _IO('8', 99)
140 #define FSACTL_QUERY_DISK _IO('9', 115)
141
142 #define FSACTL_PROBE_CONTAINERS _IO('9', 83) /* Just guessing */
143
144 #ifdef _KERNEL
145 /*
146 * Support for faking the "miniport" version.
147 */
148 struct aac_rev_check {
149 RevComponent callingComponent;
150 struct FsaRevision callingRevision;
151 };
152
153 struct aac_rev_check_resp {
154 int possiblyCompatible;
155 struct FsaRevision adapterSWRevision;
156 };
157
158 /*
159 * Context passed in by a consumer looking to collect an AIF.
160 */
161 struct get_adapter_fib_ioctl {
162 u_int32_t AdapterFibContext;
163 int Wait;
164 caddr_t AifFib;
165 };
166
167 struct aac_query_disk {
168 int32_t ContainerNumber;
169 int32_t Bus;
170 int32_t Target;
171 int32_t Lun;
172 u_int32_t Valid;
173 u_int32_t Locked;
174 u_int32_t Deleted;
175 int32_t Instance;
176 char diskDeviceName[10];
177 u_int32_t UnMapped;
178 };
179 #endif
Cache object: eb40863b5cffbf18fb7f0e8365092124
|