Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
scsi
dpt
osd_util.h
Go to the documentation of this file.
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 milliseconds */
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 */
Generated on Thu Jan 10 2013 14:20:21 for Linux Kernel by
1.8.2