diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/scsi/dpt/osd_util.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/scsi/dpt/osd_util.h')
-rw-r--r-- | drivers/scsi/dpt/osd_util.h | 358 |
1 files changed, 358 insertions, 0 deletions
diff --git a/drivers/scsi/dpt/osd_util.h b/drivers/scsi/dpt/osd_util.h new file mode 100644 index 000000000000..4b56c0436ba2 --- /dev/null +++ b/drivers/scsi/dpt/osd_util.h | |||
@@ -0,0 +1,358 @@ | |||
1 | /* BSDI osd_util.h,v 1.8 1998/06/03 19:14:58 karels Exp */ | ||
2 | |||
3 | /* | ||
4 | * Copyright (c) 1996-1999 Distributed Processing Technology Corporation | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Redistribution and use in source form, with or without modification, are | ||
8 | * permitted provided that redistributions of source code must retain the | ||
9 | * above copyright notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * This software is provided `as is' by Distributed Processing Technology and | ||
12 | * any express or implied warranties, including, but not limited to, the | ||
13 | * implied warranties of merchantability and fitness for a particular purpose, | ||
14 | * are disclaimed. In no event shall Distributed Processing Technology be | ||
15 | * liable for any direct, indirect, incidental, special, exemplary or | ||
16 | * consequential damages (including, but not limited to, procurement of | ||
17 | * substitute goods or services; loss of use, data, or profits; or business | ||
18 | * interruptions) however caused and on any theory of liability, whether in | ||
19 | * contract, strict liability, or tort (including negligence or otherwise) | ||
20 | * arising in any way out of the use of this driver software, even if advised | ||
21 | * of the possibility of such damage. | ||
22 | * | ||
23 | */ | ||
24 | |||
25 | #ifndef __OSD_UTIL_H | ||
26 | #define __OSD_UTIL_H | ||
27 | |||
28 | /*File - OSD_UTIL.H | ||
29 | **************************************************************************** | ||
30 | * | ||
31 | *Description: | ||
32 | * | ||
33 | * This file contains defines and function prototypes that are | ||
34 | *operating system dependent. The resources defined in this file | ||
35 | *are not specific to any particular application. | ||
36 | * | ||
37 | *Copyright Distributed Processing Technology, Corp. | ||
38 | * 140 Candace Dr. | ||
39 | * Maitland, Fl. 32751 USA | ||
40 | * Phone: (407) 830-5522 Fax: (407) 260-5366 | ||
41 | * All Rights Reserved | ||
42 | * | ||
43 | *Author: Doug Anderson | ||
44 | *Date: 1/7/94 | ||
45 | * | ||
46 | *Editors: | ||
47 | * | ||
48 | *Remarks: | ||
49 | * | ||
50 | * | ||
51 | *****************************************************************************/ | ||
52 | |||
53 | |||
54 | /*Definitions - Defines & Constants ----------------------------------------- */ | ||
55 | |||
56 | /*----------------------------- */ | ||
57 | /* Operating system selections: */ | ||
58 | /*----------------------------- */ | ||
59 | |||
60 | /*#define _DPT_MSDOS */ | ||
61 | /*#define _DPT_WIN_3X */ | ||
62 | /*#define _DPT_WIN_4X */ | ||
63 | /*#define _DPT_WIN_NT */ | ||
64 | /*#define _DPT_NETWARE */ | ||
65 | /*#define _DPT_OS2 */ | ||
66 | /*#define _DPT_SCO */ | ||
67 | /*#define _DPT_UNIXWARE */ | ||
68 | /*#define _DPT_SOLARIS */ | ||
69 | /*#define _DPT_NEXTSTEP */ | ||
70 | /*#define _DPT_BANYAN */ | ||
71 | |||
72 | /*-------------------------------- */ | ||
73 | /* Include the OS specific defines */ | ||
74 | /*-------------------------------- */ | ||
75 | |||
76 | /*#define OS_SELECTION From Above List */ | ||
77 | /*#define SEMAPHORE_T ??? */ | ||
78 | /*#define DLL_HANDLE_T ??? */ | ||
79 | |||
80 | #if (defined(KERNEL) && (defined(__FreeBSD__) || defined(__bsdi__))) | ||
81 | # include "i386/isa/dpt_osd_defs.h" | ||
82 | #else | ||
83 | # include "osd_defs.h" | ||
84 | #endif | ||
85 | |||
86 | #ifndef DPT_UNALIGNED | ||
87 | #define DPT_UNALIGNED | ||
88 | #endif | ||
89 | |||
90 | #ifndef DPT_EXPORT | ||
91 | #define DPT_EXPORT | ||
92 | #endif | ||
93 | |||
94 | #ifndef DPT_IMPORT | ||
95 | #define DPT_IMPORT | ||
96 | #endif | ||
97 | |||
98 | #ifndef DPT_RUNTIME_IMPORT | ||
99 | #define DPT_RUNTIME_IMPORT DPT_IMPORT | ||
100 | #endif | ||
101 | |||
102 | /*--------------------- */ | ||
103 | /* OS dependent defines */ | ||
104 | /*--------------------- */ | ||
105 | |||
106 | #if defined (_DPT_MSDOS) || defined (_DPT_WIN_3X) | ||
107 | #define _DPT_16_BIT | ||
108 | #else | ||
109 | #define _DPT_32_BIT | ||
110 | #endif | ||
111 | |||
112 | #if defined (_DPT_SCO) || defined (_DPT_UNIXWARE) || defined (_DPT_SOLARIS) || defined (_DPT_AIX) || defined (SNI_MIPS) || defined (_DPT_BSDI) || defined (_DPT_FREE_BSD) || defined(_DPT_LINUX) | ||
113 | #define _DPT_UNIX | ||
114 | #endif | ||
115 | |||
116 | #if defined (_DPT_WIN_3x) || defined (_DPT_WIN_4X) || defined (_DPT_WIN_NT) \ | ||
117 | || defined (_DPT_OS2) | ||
118 | #define _DPT_DLL_SUPPORT | ||
119 | #endif | ||
120 | |||
121 | #if !defined (_DPT_MSDOS) && !defined (_DPT_WIN_3X) && !defined (_DPT_NETWARE) | ||
122 | #define _DPT_PREEMPTIVE | ||
123 | #endif | ||
124 | |||
125 | #if !defined (_DPT_MSDOS) && !defined (_DPT_WIN_3X) | ||
126 | #define _DPT_MULTI_THREADED | ||
127 | #endif | ||
128 | |||
129 | #if !defined (_DPT_MSDOS) | ||
130 | #define _DPT_MULTI_TASKING | ||
131 | #endif | ||
132 | |||
133 | /* These exist for platforms that */ | ||
134 | /* chunk when accessing mis-aligned */ | ||
135 | /* data */ | ||
136 | #if defined (SNI_MIPS) || defined (_DPT_SOLARIS) | ||
137 | #if defined (_DPT_BIG_ENDIAN) | ||
138 | #if !defined (_DPT_STRICT_ALIGN) | ||
139 | #define _DPT_STRICT_ALIGN | ||
140 | #endif | ||
141 | #endif | ||
142 | #endif | ||
143 | |||
144 | /* Determine if in C or C++ mode */ | ||
145 | #ifdef __cplusplus | ||
146 | #define _DPT_CPP | ||
147 | #else | ||
148 | #define _DPT_C | ||
149 | #endif | ||
150 | |||
151 | /*-------------------------------------------------------------------*/ | ||
152 | /* Under Solaris the compiler refuses to accept code like: */ | ||
153 | /* { {"DPT"}, 0, NULL .... }, */ | ||
154 | /* and complains about the {"DPT"} part by saying "cannot use { } */ | ||
155 | /* to initialize char*". */ | ||
156 | /* */ | ||
157 | /* By defining these ugly macros we can get around this and also */ | ||
158 | /* not have to copy and #ifdef large sections of code. I know that */ | ||
159 | /* these macros are *really* ugly, but they should help reduce */ | ||
160 | /* maintenance in the long run. */ | ||
161 | /* */ | ||
162 | /*-------------------------------------------------------------------*/ | ||
163 | #if !defined (DPTSQO) | ||
164 | #if defined (_DPT_SOLARIS) | ||
165 | #define DPTSQO | ||
166 | #define DPTSQC | ||
167 | #else | ||
168 | #define DPTSQO { | ||
169 | #define DPTSQC } | ||
170 | #endif /* solaris */ | ||
171 | #endif /* DPTSQO */ | ||
172 | |||
173 | |||
174 | /*---------------------- */ | ||
175 | /* OS dependent typedefs */ | ||
176 | /*---------------------- */ | ||
177 | |||
178 | #if defined (_DPT_MSDOS) || defined (_DPT_SCO) | ||
179 | #define BYTE unsigned char | ||
180 | #define WORD unsigned short | ||
181 | #endif | ||
182 | |||
183 | #ifndef _DPT_TYPEDEFS | ||
184 | #define _DPT_TYPEDEFS | ||
185 | typedef unsigned char uCHAR; | ||
186 | typedef unsigned short uSHORT; | ||
187 | typedef unsigned int uINT; | ||
188 | typedef unsigned long uLONG; | ||
189 | |||
190 | typedef union { | ||
191 | uCHAR u8[4]; | ||
192 | uSHORT u16[2]; | ||
193 | uLONG u32; | ||
194 | } access_U; | ||
195 | #endif | ||
196 | |||
197 | #if !defined (NULL) | ||
198 | #define NULL 0 | ||
199 | #endif | ||
200 | |||
201 | |||
202 | /*Prototypes - function ----------------------------------------------------- */ | ||
203 | |||
204 | #ifdef __cplusplus | ||
205 | extern "C" { /* Declare all these functions as "C" functions */ | ||
206 | #endif | ||
207 | |||
208 | /*------------------------ */ | ||
209 | /* Byte reversal functions */ | ||
210 | /*------------------------ */ | ||
211 | |||
212 | /* Reverses the byte ordering of a 2 byte variable */ | ||
213 | #if (!defined(osdSwap2)) | ||
214 | uSHORT osdSwap2(DPT_UNALIGNED uSHORT *); | ||
215 | #endif // !osdSwap2 | ||
216 | |||
217 | /* Reverses the byte ordering of a 4 byte variable and shifts left 8 bits */ | ||
218 | #if (!defined(osdSwap3)) | ||
219 | uLONG osdSwap3(DPT_UNALIGNED uLONG *); | ||
220 | #endif // !osdSwap3 | ||
221 | |||
222 | |||
223 | #ifdef _DPT_NETWARE | ||
224 | #include "novpass.h" /* For DPT_Bswapl() prototype */ | ||
225 | /* Inline the byte swap */ | ||
226 | #ifdef __cplusplus | ||
227 | inline uLONG osdSwap4(uLONG *inLong) { | ||
228 | return *inLong = DPT_Bswapl(*inLong); | ||
229 | } | ||
230 | #else | ||
231 | #define osdSwap4(inLong) DPT_Bswapl(inLong) | ||
232 | #endif // cplusplus | ||
233 | #else | ||
234 | /* Reverses the byte ordering of a 4 byte variable */ | ||
235 | # if (!defined(osdSwap4)) | ||
236 | uLONG osdSwap4(DPT_UNALIGNED uLONG *); | ||
237 | # endif // !osdSwap4 | ||
238 | |||
239 | /* The following functions ALWAYS swap regardless of the * | ||
240 | * presence of DPT_BIG_ENDIAN */ | ||
241 | |||
242 | uSHORT trueSwap2(DPT_UNALIGNED uSHORT *); | ||
243 | uLONG trueSwap4(DPT_UNALIGNED uLONG *); | ||
244 | |||
245 | #endif // netware | ||
246 | |||
247 | |||
248 | /*-------------------------------------* | ||
249 | * Network order swap functions * | ||
250 | * * | ||
251 | * These functions/macros will be used * | ||
252 | * by the structure insert()/extract() * | ||
253 | * functions. * | ||
254 | * | ||
255 | * We will enclose all structure * | ||
256 | * portability modifications inside * | ||
257 | * #ifdefs. When we are ready, we * | ||
258 | * will #define DPT_PORTABLE to begin * | ||
259 | * using the modifications. * | ||
260 | *-------------------------------------*/ | ||
261 | uLONG netSwap4(uLONG val); | ||
262 | |||
263 | #if defined (_DPT_BIG_ENDIAN) | ||
264 | |||
265 | // for big-endian we need to swap | ||
266 | |||
267 | #ifndef NET_SWAP_2 | ||
268 | #define NET_SWAP_2(x) (((x) >> 8) | ((x) << 8)) | ||
269 | #endif // NET_SWAP_2 | ||
270 | |||
271 | #ifndef NET_SWAP_4 | ||
272 | #define NET_SWAP_4(x) netSwap4((x)) | ||
273 | #endif // NET_SWAP_4 | ||
274 | |||
275 | #else | ||
276 | |||
277 | // for little-endian we don't need to do anything | ||
278 | |||
279 | #ifndef NET_SWAP_2 | ||
280 | #define NET_SWAP_2(x) (x) | ||
281 | #endif // NET_SWAP_2 | ||
282 | |||
283 | #ifndef NET_SWAP_4 | ||
284 | #define NET_SWAP_4(x) (x) | ||
285 | #endif // NET_SWAP_4 | ||
286 | |||
287 | #endif // big endian | ||
288 | |||
289 | |||
290 | |||
291 | /*----------------------------------- */ | ||
292 | /* Run-time loadable module functions */ | ||
293 | /*----------------------------------- */ | ||
294 | |||
295 | /* Loads the specified run-time loadable DLL */ | ||
296 | DLL_HANDLE_T osdLoadModule(uCHAR *); | ||
297 | /* Unloads the specified run-time loadable DLL */ | ||
298 | uSHORT osdUnloadModule(DLL_HANDLE_T); | ||
299 | /* Returns a pointer to a function inside a run-time loadable DLL */ | ||
300 | void * osdGetFnAddr(DLL_HANDLE_T,uCHAR *); | ||
301 | |||
302 | /*--------------------------------------- */ | ||
303 | /* Mutually exclusive semaphore functions */ | ||
304 | /*--------------------------------------- */ | ||
305 | |||
306 | /* Create a named semaphore */ | ||
307 | SEMAPHORE_T osdCreateNamedSemaphore(char *); | ||
308 | /* Create a mutually exlusive semaphore */ | ||
309 | SEMAPHORE_T osdCreateSemaphore(void); | ||
310 | /* create an event semaphore */ | ||
311 | SEMAPHORE_T osdCreateEventSemaphore(void); | ||
312 | /* create a named event semaphore */ | ||
313 | SEMAPHORE_T osdCreateNamedEventSemaphore(char *); | ||
314 | |||
315 | /* Destroy the specified mutually exclusive semaphore object */ | ||
316 | uSHORT osdDestroySemaphore(SEMAPHORE_T); | ||
317 | /* Request access to the specified mutually exclusive semaphore */ | ||
318 | uLONG osdRequestSemaphore(SEMAPHORE_T,uLONG); | ||
319 | /* Release access to the specified mutually exclusive semaphore */ | ||
320 | uSHORT osdReleaseSemaphore(SEMAPHORE_T); | ||
321 | /* wait for a event to happen */ | ||
322 | uLONG osdWaitForEventSemaphore(SEMAPHORE_T, uLONG); | ||
323 | /* signal an event */ | ||
324 | uLONG osdSignalEventSemaphore(SEMAPHORE_T); | ||
325 | /* reset the event */ | ||
326 | uLONG osdResetEventSemaphore(SEMAPHORE_T); | ||
327 | |||
328 | /*----------------- */ | ||
329 | /* Thread functions */ | ||
330 | /*----------------- */ | ||
331 | |||
332 | /* Releases control to the task switcher in non-preemptive */ | ||
333 | /* multitasking operating systems. */ | ||
334 | void osdSwitchThreads(void); | ||
335 | |||
336 | /* Starts a thread function */ | ||
337 | uLONG osdStartThread(void *,void *); | ||
338 | |||
339 | /* what is my thread id */ | ||
340 | uLONG osdGetThreadID(void); | ||
341 | |||
342 | /* wakes up the specifed thread */ | ||
343 | void osdWakeThread(uLONG); | ||
344 | |||
345 | /* osd sleep for x miliseconds */ | ||
346 | void osdSleep(uLONG); | ||
347 | |||
348 | #define DPT_THREAD_PRIORITY_LOWEST 0x00 | ||
349 | #define DPT_THREAD_PRIORITY_NORMAL 0x01 | ||
350 | #define DPT_THREAD_PRIORITY_HIGHEST 0x02 | ||
351 | |||
352 | uCHAR osdSetThreadPriority(uLONG tid, uCHAR priority); | ||
353 | |||
354 | #ifdef __cplusplus | ||
355 | } /* end the xtern "C" declaration */ | ||
356 | #endif | ||
357 | |||
358 | #endif /* osd_util_h */ | ||