1d6b92ffaSHans Petter Selasky /*
2d6b92ffaSHans Petter Selasky * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.
3d6b92ffaSHans Petter Selasky * Copyright (c) 2002-2010 Mellanox Technologies LTD. All rights reserved.
4d6b92ffaSHans Petter Selasky * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
5d6b92ffaSHans Petter Selasky *
6d6b92ffaSHans Petter Selasky * This software is available to you under a choice of one of two
7d6b92ffaSHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU
8d6b92ffaSHans Petter Selasky * General Public License (GPL) Version 2, available from the file
9d6b92ffaSHans Petter Selasky * COPYING in the main directory of this source tree, or the
10d6b92ffaSHans Petter Selasky * OpenIB.org BSD license below:
11d6b92ffaSHans Petter Selasky *
12d6b92ffaSHans Petter Selasky * Redistribution and use in source and binary forms, with or
13d6b92ffaSHans Petter Selasky * without modification, are permitted provided that the following
14d6b92ffaSHans Petter Selasky * conditions are met:
15d6b92ffaSHans Petter Selasky *
16d6b92ffaSHans Petter Selasky * - Redistributions of source code must retain the above
17d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following
18d6b92ffaSHans Petter Selasky * disclaimer.
19d6b92ffaSHans Petter Selasky *
20d6b92ffaSHans Petter Selasky * - Redistributions in binary form must reproduce the above
21d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following
22d6b92ffaSHans Petter Selasky * disclaimer in the documentation and/or other materials
23d6b92ffaSHans Petter Selasky * provided with the distribution.
24d6b92ffaSHans Petter Selasky *
25d6b92ffaSHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26d6b92ffaSHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27d6b92ffaSHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28d6b92ffaSHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29d6b92ffaSHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30d6b92ffaSHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31d6b92ffaSHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32d6b92ffaSHans Petter Selasky * SOFTWARE.
33d6b92ffaSHans Petter Selasky *
34d6b92ffaSHans Petter Selasky */
35d6b92ffaSHans Petter Selasky
36d6b92ffaSHans Petter Selasky /*
37d6b92ffaSHans Petter Selasky * Abstract:
38d6b92ffaSHans Petter Selasky * Defines standard return codes, keywords, macros, and debug levels.
39d6b92ffaSHans Petter Selasky */
40d6b92ffaSHans Petter Selasky
41d6b92ffaSHans Petter Selasky #ifdef __WIN__
42d6b92ffaSHans Petter Selasky #pragma warning(disable : 4996)
43d6b92ffaSHans Petter Selasky #endif
44d6b92ffaSHans Petter Selasky
45d6b92ffaSHans Petter Selasky #ifndef _CL_TYPES_H_
46d6b92ffaSHans Petter Selasky #define _CL_TYPES_H_
47d6b92ffaSHans Petter Selasky
48d6b92ffaSHans Petter Selasky #ifdef __cplusplus
49d6b92ffaSHans Petter Selasky # define BEGIN_C_DECLS extern "C" {
50d6b92ffaSHans Petter Selasky # define END_C_DECLS }
51d6b92ffaSHans Petter Selasky #else /* !__cplusplus */
52d6b92ffaSHans Petter Selasky # define BEGIN_C_DECLS
53d6b92ffaSHans Petter Selasky # define END_C_DECLS
54d6b92ffaSHans Petter Selasky #endif /* __cplusplus */
55d6b92ffaSHans Petter Selasky
56d6b92ffaSHans Petter Selasky BEGIN_C_DECLS
57d6b92ffaSHans Petter Selasky #include <complib/cl_types_osd.h>
58d6b92ffaSHans Petter Selasky #include <stddef.h>
59d6b92ffaSHans Petter Selasky typedef uint16_t net16_t;
60d6b92ffaSHans Petter Selasky typedef uint32_t net32_t;
61d6b92ffaSHans Petter Selasky typedef uint64_t net64_t;
62d6b92ffaSHans Petter Selasky
63d6b92ffaSHans Petter Selasky /* explicit cast of void* to uint32_t */
64d6b92ffaSHans Petter Selasky #ifndef ASSERT_VOIDP2UINTN
65d6b92ffaSHans Petter Selasky #if __WORDSIZE == 64
66d6b92ffaSHans Petter Selasky #define ASSERT_VOIDP2UINTN(var) \
67d6b92ffaSHans Petter Selasky CL_ASSERT( (intptr_t)var <= 0xffffffffffffffffL )
68d6b92ffaSHans Petter Selasky #else /* __WORDSIZE == 64 */
69d6b92ffaSHans Petter Selasky #if __WORDSIZE == 32
70d6b92ffaSHans Petter Selasky /* need to cast carefully to avoid the warining of un-needed check */
71d6b92ffaSHans Petter Selasky #define ASSERT_VOIDP2UINTN(var) \
72d6b92ffaSHans Petter Selasky CL_ASSERT( (intptr_t)var <= 0x100000000ULL )
73d6b92ffaSHans Petter Selasky #else /* __WORDSIZE == 32 */
74d6b92ffaSHans Petter Selasky #error "Need to know WORDSIZE to tell how to cast to unsigned long int"
75d6b92ffaSHans Petter Selasky #endif /* __WORDSIZE == 32 */
76d6b92ffaSHans Petter Selasky #endif /* __WORDSIZE == 64 */
77d6b92ffaSHans Petter Selasky #endif
78d6b92ffaSHans Petter Selasky
79d6b92ffaSHans Petter Selasky /* explicit casting of void* to long */
80d6b92ffaSHans Petter Selasky #ifndef CAST_P2LONG
81d6b92ffaSHans Petter Selasky #define CAST_P2LONG(var) ((intptr_t)(var))
82d6b92ffaSHans Petter Selasky #endif
83d6b92ffaSHans Petter Selasky
84d6b92ffaSHans Petter Selasky /****d* Component Library: Pointer Manipulation/offsetof
85d6b92ffaSHans Petter Selasky * NAME
86d6b92ffaSHans Petter Selasky * offsetof
87d6b92ffaSHans Petter Selasky *
88d6b92ffaSHans Petter Selasky * DESCRIPTION
89d6b92ffaSHans Petter Selasky * The offsetof macro returns the offset of a member within a structure.
90d6b92ffaSHans Petter Selasky *
91d6b92ffaSHans Petter Selasky * SYNOPSIS
92d6b92ffaSHans Petter Selasky * uintptr_t
93d6b92ffaSHans Petter Selasky * offsetof(
94d6b92ffaSHans Petter Selasky * IN TYPE,
95d6b92ffaSHans Petter Selasky * IN MEMBER );
96d6b92ffaSHans Petter Selasky *
97d6b92ffaSHans Petter Selasky * PARAMETERS
98d6b92ffaSHans Petter Selasky * TYPE
99d6b92ffaSHans Petter Selasky * [in] Name of the structure containing the specified member.
100d6b92ffaSHans Petter Selasky *
101d6b92ffaSHans Petter Selasky * MEMBER
102d6b92ffaSHans Petter Selasky * [in] Name of the member whose offset in the specified structure
103d6b92ffaSHans Petter Selasky * is to be returned.
104d6b92ffaSHans Petter Selasky *
105d6b92ffaSHans Petter Selasky * RETURN VALUE
106d6b92ffaSHans Petter Selasky * Number of bytes from the beginning of the structure to the
107d6b92ffaSHans Petter Selasky * specified member.
108d6b92ffaSHans Petter Selasky *
109d6b92ffaSHans Petter Selasky * SEE ALSO
110d6b92ffaSHans Petter Selasky * PARENT_STRUCT
111d6b92ffaSHans Petter Selasky *********/
112d6b92ffaSHans Petter Selasky #ifndef offsetof
113d6b92ffaSHans Petter Selasky #define offsetof(TYPE, MEMBER) ((uintptr_t) &((TYPE *)0)->MEMBER)
114d6b92ffaSHans Petter Selasky #endif
115d6b92ffaSHans Petter Selasky
116d6b92ffaSHans Petter Selasky /****d* Component Library: Pointer Manipulation/PARENT_STRUCT
117d6b92ffaSHans Petter Selasky * NAME
118d6b92ffaSHans Petter Selasky * PARENT_STRUCT
119d6b92ffaSHans Petter Selasky *
120d6b92ffaSHans Petter Selasky * DESCRIPTION
121d6b92ffaSHans Petter Selasky * The PARENT_STRUCT macro returns a pointer to a structure
122d6b92ffaSHans Petter Selasky * given a name and pointer to one of its members.
123d6b92ffaSHans Petter Selasky *
124d6b92ffaSHans Petter Selasky * SYNOPSIS
125d6b92ffaSHans Petter Selasky * PARENT_TYPE*
126d6b92ffaSHans Petter Selasky * PARENT_STRUCT(
127d6b92ffaSHans Petter Selasky * IN void* const p_member,
128d6b92ffaSHans Petter Selasky * IN PARENT_TYPE,
129d6b92ffaSHans Petter Selasky * IN MEMBER_NAME );
130d6b92ffaSHans Petter Selasky *
131d6b92ffaSHans Petter Selasky * PARAMETERS
132d6b92ffaSHans Petter Selasky * p_member
133d6b92ffaSHans Petter Selasky * [in] Pointer to the MEMBER_NAME member of a PARENT_TYPE structure.
134d6b92ffaSHans Petter Selasky *
135d6b92ffaSHans Petter Selasky * PARENT_TYPE
136d6b92ffaSHans Petter Selasky * [in] Name of the structure containing the specified member.
137d6b92ffaSHans Petter Selasky *
138d6b92ffaSHans Petter Selasky * MEMBER_NAME
139d6b92ffaSHans Petter Selasky * [in] Name of the member whose address is passed in the p_member
140d6b92ffaSHans Petter Selasky * parameter.
141d6b92ffaSHans Petter Selasky *
142d6b92ffaSHans Petter Selasky * RETURN VALUE
143d6b92ffaSHans Petter Selasky * Pointer to a structure of type PARENT_TYPE whose MEMBER_NAME member is
144d6b92ffaSHans Petter Selasky * located at p_member.
145d6b92ffaSHans Petter Selasky *
146d6b92ffaSHans Petter Selasky * SEE ALSO
147d6b92ffaSHans Petter Selasky * offsetof
148d6b92ffaSHans Petter Selasky *********/
149d6b92ffaSHans Petter Selasky #define PARENT_STRUCT(p_member, PARENT_TYPE, MEMBER_NAME) \
150d6b92ffaSHans Petter Selasky ((PARENT_TYPE*)((uint8_t*)(p_member) - offsetof(PARENT_TYPE, MEMBER_NAME)))
151d6b92ffaSHans Petter Selasky
152d6b92ffaSHans Petter Selasky /****d* Component Library/Parameter Keywords
153d6b92ffaSHans Petter Selasky * NAME
154d6b92ffaSHans Petter Selasky * Parameter Keywords
155d6b92ffaSHans Petter Selasky *
156d6b92ffaSHans Petter Selasky * DESCRIPTION
157d6b92ffaSHans Petter Selasky * The Parameter Keywords can be used to clarify the usage of function
158d6b92ffaSHans Petter Selasky * parameters to users.
159d6b92ffaSHans Petter Selasky *
160d6b92ffaSHans Petter Selasky * VALUES
161d6b92ffaSHans Petter Selasky * IN
162d6b92ffaSHans Petter Selasky * Designates that the parameter is used as input to a function.
163d6b92ffaSHans Petter Selasky *
164d6b92ffaSHans Petter Selasky * OUT
165d6b92ffaSHans Petter Selasky * Designates that the parameter's value will be set by the function.
166d6b92ffaSHans Petter Selasky *
167d6b92ffaSHans Petter Selasky * OPTIONAL
168d6b92ffaSHans Petter Selasky * Designates that the parameter is optional, and may be NULL.
169d6b92ffaSHans Petter Selasky * The OPTIONAL keyword, if used, follows the parameter name.
170d6b92ffaSHans Petter Selasky *
171d6b92ffaSHans Petter Selasky * EXAMPLE
172d6b92ffaSHans Petter Selasky * // Function declaration.
173d6b92ffaSHans Petter Selasky * void*
174d6b92ffaSHans Petter Selasky * my_func(
175d6b92ffaSHans Petter Selasky * IN void* const p_param1,
176d6b92ffaSHans Petter Selasky * OUT void** const p_handle OPTIONAL );
177d6b92ffaSHans Petter Selasky *
178d6b92ffaSHans Petter Selasky * NOTES
179d6b92ffaSHans Petter Selasky * Multiple keywords can apply to a single parameter. The IN and OUT
180d6b92ffaSHans Petter Selasky * keywords precede the parameter type. The OPTIONAL
181d6b92ffaSHans Petter Selasky * keyword, if used, follows the parameter name.
182d6b92ffaSHans Petter Selasky *********/
183d6b92ffaSHans Petter Selasky #ifndef IN
184d6b92ffaSHans Petter Selasky #define IN /* Function input parameter */
185d6b92ffaSHans Petter Selasky #endif
186d6b92ffaSHans Petter Selasky #ifndef OUT
187d6b92ffaSHans Petter Selasky #define OUT /* Function output parameter */
188d6b92ffaSHans Petter Selasky #endif
189d6b92ffaSHans Petter Selasky #ifndef OPTIONAL
190d6b92ffaSHans Petter Selasky #define OPTIONAL /* Optional function parameter - NULL if not used */
191d6b92ffaSHans Petter Selasky #endif
192d6b92ffaSHans Petter Selasky
193d6b92ffaSHans Petter Selasky /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
194d6b92ffaSHans Petter Selasky %% Function Returns And Completion Codes %%
195d6b92ffaSHans Petter Selasky %% %%
196d6b92ffaSHans Petter Selasky %% The text for any addition to this enumerated type must be added to the %%
197d6b92ffaSHans Petter Selasky %% string array defined in <cl_statustext.c>. %%
198d6b92ffaSHans Petter Selasky %% %%
199d6b92ffaSHans Petter Selasky %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
200d6b92ffaSHans Petter Selasky
201d6b92ffaSHans Petter Selasky /****d* Component Library/Data Types
202d6b92ffaSHans Petter Selasky * NAME
203d6b92ffaSHans Petter Selasky * Data Types
204d6b92ffaSHans Petter Selasky *
205d6b92ffaSHans Petter Selasky * DESCRIPTION
206d6b92ffaSHans Petter Selasky * The component library provides and uses explicitly sized types.
207d6b92ffaSHans Petter Selasky *
208d6b92ffaSHans Petter Selasky * VALUES
209d6b92ffaSHans Petter Selasky * char
210d6b92ffaSHans Petter Selasky * 8-bit, defined by compiler.
211d6b92ffaSHans Petter Selasky *
212d6b92ffaSHans Petter Selasky * void
213d6b92ffaSHans Petter Selasky * 0-bit, defined by compiler.
214d6b92ffaSHans Petter Selasky *
215d6b92ffaSHans Petter Selasky * int8_t
216d6b92ffaSHans Petter Selasky * 8-bit signed integer.
217d6b92ffaSHans Petter Selasky *
218d6b92ffaSHans Petter Selasky * uint8_t
219d6b92ffaSHans Petter Selasky * 8-bit unsigned integer.
220d6b92ffaSHans Petter Selasky *
221d6b92ffaSHans Petter Selasky * int16_t
222d6b92ffaSHans Petter Selasky * 16-bit signed integer.
223d6b92ffaSHans Petter Selasky *
224d6b92ffaSHans Petter Selasky * uint16_t
225d6b92ffaSHans Petter Selasky * 16-bit unsigned integer.
226d6b92ffaSHans Petter Selasky *
227d6b92ffaSHans Petter Selasky * net16_t
228d6b92ffaSHans Petter Selasky * 16-bit network byte order value.
229d6b92ffaSHans Petter Selasky *
230d6b92ffaSHans Petter Selasky * int32_t
231d6b92ffaSHans Petter Selasky * 32-bit signed integer.
232d6b92ffaSHans Petter Selasky *
233d6b92ffaSHans Petter Selasky * uint32_t
234d6b92ffaSHans Petter Selasky * 32-bit unsigned integer.
235d6b92ffaSHans Petter Selasky *
236d6b92ffaSHans Petter Selasky * net32_t
237d6b92ffaSHans Petter Selasky * 32-bit network byte order value.
238d6b92ffaSHans Petter Selasky *
239d6b92ffaSHans Petter Selasky * int64_t
240d6b92ffaSHans Petter Selasky * 64-bit signed integer.
241d6b92ffaSHans Petter Selasky *
242d6b92ffaSHans Petter Selasky * uint64_t
243d6b92ffaSHans Petter Selasky * 64-bit unsigned integer.
244d6b92ffaSHans Petter Selasky *
245d6b92ffaSHans Petter Selasky * net64_t
246d6b92ffaSHans Petter Selasky * 64-bit network byte order value.
247d6b92ffaSHans Petter Selasky *
248d6b92ffaSHans Petter Selasky * boolean_t
249d6b92ffaSHans Petter Selasky * integral sized. Set to TRUE or FALSE and used in logical expressions.
250d6b92ffaSHans Petter Selasky *
251d6b92ffaSHans Petter Selasky * NOTES
252d6b92ffaSHans Petter Selasky * Pointer types are not defined as these provide no value and can potentially
253d6b92ffaSHans Petter Selasky * lead to naming confusion.
254d6b92ffaSHans Petter Selasky *********/
255d6b92ffaSHans Petter Selasky
256d6b92ffaSHans Petter Selasky /****d* Component Library: Data Types/cl_status_t
257d6b92ffaSHans Petter Selasky * NAME
258d6b92ffaSHans Petter Selasky * cl_status_t
259d6b92ffaSHans Petter Selasky *
260d6b92ffaSHans Petter Selasky * DESCRIPTION
261d6b92ffaSHans Petter Selasky * The cl_status_t return types are used by the component library to
262d6b92ffaSHans Petter Selasky * provide detailed function return values.
263d6b92ffaSHans Petter Selasky *
264d6b92ffaSHans Petter Selasky * SYNOPSIS
265d6b92ffaSHans Petter Selasky */
266d6b92ffaSHans Petter Selasky #define CL_SUCCESS 0
267d6b92ffaSHans Petter Selasky #define CL_ERROR 1
268d6b92ffaSHans Petter Selasky #define CL_INVALID_STATE 2
269d6b92ffaSHans Petter Selasky #define CL_INVALID_OPERATION 3
270d6b92ffaSHans Petter Selasky #define CL_INVALID_SETTING 4
271d6b92ffaSHans Petter Selasky #define CL_INVALID_PARAMETER 5
272d6b92ffaSHans Petter Selasky #define CL_INSUFFICIENT_RESOURCES 6
273d6b92ffaSHans Petter Selasky #define CL_INSUFFICIENT_MEMORY 7
274d6b92ffaSHans Petter Selasky #define CL_INVALID_PERMISSION 8
275d6b92ffaSHans Petter Selasky #define CL_COMPLETED 9
276d6b92ffaSHans Petter Selasky #define CL_NOT_DONE 10
277d6b92ffaSHans Petter Selasky #define CL_PENDING 11
278d6b92ffaSHans Petter Selasky #define CL_TIMEOUT 12
279d6b92ffaSHans Petter Selasky #define CL_CANCELED 13
280d6b92ffaSHans Petter Selasky #define CL_REJECT 14
281d6b92ffaSHans Petter Selasky #define CL_OVERRUN 15
282d6b92ffaSHans Petter Selasky #define CL_NOT_FOUND 16
283d6b92ffaSHans Petter Selasky #define CL_UNAVAILABLE 17
284d6b92ffaSHans Petter Selasky #define CL_BUSY 18
285d6b92ffaSHans Petter Selasky #define CL_DISCONNECT 19
286d6b92ffaSHans Petter Selasky #define CL_DUPLICATE 20
287d6b92ffaSHans Petter Selasky #define CL_STATUS_COUNT 21 /* should be the last value */
288d6b92ffaSHans Petter Selasky
289d6b92ffaSHans Petter Selasky typedef int cl_status_t;
290d6b92ffaSHans Petter Selasky /*
291d6b92ffaSHans Petter Selasky * SEE ALSO
292d6b92ffaSHans Petter Selasky * Data Types, CL_STATUS_MSG
293d6b92ffaSHans Petter Selasky *********/
294d6b92ffaSHans Petter Selasky
295d6b92ffaSHans Petter Selasky /* Status values above converted to text for easier printing. */
296d6b92ffaSHans Petter Selasky extern const char *cl_status_text[];
297d6b92ffaSHans Petter Selasky
298d6b92ffaSHans Petter Selasky #ifndef cl_panic
299d6b92ffaSHans Petter Selasky /****f* Component Library: Error Trapping/cl_panic
300d6b92ffaSHans Petter Selasky * NAME
301d6b92ffaSHans Petter Selasky * cl_panic
302d6b92ffaSHans Petter Selasky *
303d6b92ffaSHans Petter Selasky * DESCRIPTION
304d6b92ffaSHans Petter Selasky * Halts execution of the current process. Halts the system if called in
305d6b92ffaSHans Petter Selasky * from the kernel.
306d6b92ffaSHans Petter Selasky *
307d6b92ffaSHans Petter Selasky * SYNOPSIS
308d6b92ffaSHans Petter Selasky */
309d6b92ffaSHans Petter Selasky void cl_panic(IN const char *const message, IN ...);
310d6b92ffaSHans Petter Selasky /*
311d6b92ffaSHans Petter Selasky * PARAMETERS
312d6b92ffaSHans Petter Selasky * message
313d6b92ffaSHans Petter Selasky * [in] ANSI string formatted identically as for a call to the standard C
314d6b92ffaSHans Petter Selasky * function printf describing the cause for the panic.
315d6b92ffaSHans Petter Selasky *
316d6b92ffaSHans Petter Selasky * ...
317d6b92ffaSHans Petter Selasky * [in] Extra parameters for string formatting, as defined for the
318d6b92ffaSHans Petter Selasky * standard C function printf.
319d6b92ffaSHans Petter Selasky *
320d6b92ffaSHans Petter Selasky * RETURN VALUE
321d6b92ffaSHans Petter Selasky * This function does not return.
322d6b92ffaSHans Petter Selasky *
323d6b92ffaSHans Petter Selasky * NOTES
324d6b92ffaSHans Petter Selasky * The formatting of the message string is the same as for printf
325d6b92ffaSHans Petter Selasky *
326d6b92ffaSHans Petter Selasky * cl_panic sends the message to the current message logging target.
327d6b92ffaSHans Petter Selasky *********/
328d6b92ffaSHans Petter Selasky #endif /* cl_panic */
329d6b92ffaSHans Petter Selasky
330d6b92ffaSHans Petter Selasky /****d* Component Library: Data Types/CL_STATUS_MSG
331d6b92ffaSHans Petter Selasky * NAME
332d6b92ffaSHans Petter Selasky * CL_STATUS_MSG
333d6b92ffaSHans Petter Selasky *
334d6b92ffaSHans Petter Selasky * DESCRIPTION
335d6b92ffaSHans Petter Selasky * The CL_STATUS_MSG macro returns a textual representation of
336d6b92ffaSHans Petter Selasky * an cl_status_t code.
337d6b92ffaSHans Petter Selasky *
338d6b92ffaSHans Petter Selasky * SYNOPSIS
339d6b92ffaSHans Petter Selasky * const char*
340d6b92ffaSHans Petter Selasky * CL_STATUS_MSG(
341d6b92ffaSHans Petter Selasky * IN cl_status_t errcode );
342d6b92ffaSHans Petter Selasky *
343d6b92ffaSHans Petter Selasky * PARAMETERS
344d6b92ffaSHans Petter Selasky * errcode
345d6b92ffaSHans Petter Selasky * [in] cl_status_t code for which to return a text representation.
346d6b92ffaSHans Petter Selasky *
347d6b92ffaSHans Petter Selasky * RETURN VALUE
348d6b92ffaSHans Petter Selasky * Pointer to a string containing a textual representation of the errcode
349d6b92ffaSHans Petter Selasky * parameter.
350d6b92ffaSHans Petter Selasky *
351d6b92ffaSHans Petter Selasky * NOTES
352d6b92ffaSHans Petter Selasky * This function performs boundary checking on the cl_status_t value,
353d6b92ffaSHans Petter Selasky * masking off the upper 24-bits. If the value is out of bounds, the string
354d6b92ffaSHans Petter Selasky * "invalid status code" is returned.
355d6b92ffaSHans Petter Selasky *
356d6b92ffaSHans Petter Selasky * SEE ALSO
357d6b92ffaSHans Petter Selasky * cl_status_t
358d6b92ffaSHans Petter Selasky *********/
359d6b92ffaSHans Petter Selasky #define CL_STATUS_MSG( errcode ) \
360d6b92ffaSHans Petter Selasky ((errcode < CL_STATUS_COUNT)?cl_status_text[errcode]:"invalid status code")
361d6b92ffaSHans Petter Selasky
362d6b92ffaSHans Petter Selasky #if !defined( FALSE )
363d6b92ffaSHans Petter Selasky #define FALSE 0
364d6b92ffaSHans Petter Selasky #endif /* !defined( FALSE ) */
365d6b92ffaSHans Petter Selasky
366d6b92ffaSHans Petter Selasky #if !defined( TRUE )
367d6b92ffaSHans Petter Selasky #define TRUE (!FALSE)
368d6b92ffaSHans Petter Selasky #endif /* !defined( TRUE ) */
369d6b92ffaSHans Petter Selasky
370d6b92ffaSHans Petter Selasky /****d* Component Library: Unreferenced Parameters/UNUSED_PARAM
371d6b92ffaSHans Petter Selasky * NAME
372d6b92ffaSHans Petter Selasky * UNUSED_PARAM
373d6b92ffaSHans Petter Selasky *
374d6b92ffaSHans Petter Selasky * DESCRIPTION
375d6b92ffaSHans Petter Selasky * The UNUSED_PARAM macro can be used to eliminates compiler warnings related
376d6b92ffaSHans Petter Selasky * to intentionally unused formal parameters in function implementations.
377d6b92ffaSHans Petter Selasky *
378d6b92ffaSHans Petter Selasky * SYNOPSIS
379d6b92ffaSHans Petter Selasky * UNUSED_PARAM( P )
380d6b92ffaSHans Petter Selasky *
381d6b92ffaSHans Petter Selasky * EXAMPLE
382d6b92ffaSHans Petter Selasky * void my_func( int32_t value )
383d6b92ffaSHans Petter Selasky * {
384d6b92ffaSHans Petter Selasky * UNUSED_PARAM( value );
385d6b92ffaSHans Petter Selasky * }
386d6b92ffaSHans Petter Selasky *********/
387d6b92ffaSHans Petter Selasky
388d6b92ffaSHans Petter Selasky /****d* Component Library/Object States
389d6b92ffaSHans Petter Selasky * NAME
390d6b92ffaSHans Petter Selasky * Object States
391d6b92ffaSHans Petter Selasky *
392d6b92ffaSHans Petter Selasky * DESCRIPTION
393d6b92ffaSHans Petter Selasky * The object states enumerated type defines the valid states of components.
394d6b92ffaSHans Petter Selasky *
395d6b92ffaSHans Petter Selasky * SYNOPSIS
396d6b92ffaSHans Petter Selasky */
397d6b92ffaSHans Petter Selasky typedef enum _cl_state {
398d6b92ffaSHans Petter Selasky CL_UNINITIALIZED = 1,
399d6b92ffaSHans Petter Selasky CL_INITIALIZED,
400d6b92ffaSHans Petter Selasky CL_DESTROYING,
401d6b92ffaSHans Petter Selasky CL_DESTROYED
402d6b92ffaSHans Petter Selasky } cl_state_t;
403d6b92ffaSHans Petter Selasky /*
404d6b92ffaSHans Petter Selasky * VALUES
405d6b92ffaSHans Petter Selasky * CL_UNINITIALIZED
406d6b92ffaSHans Petter Selasky * Indicates that initialization was not invoked successfully.
407d6b92ffaSHans Petter Selasky *
408d6b92ffaSHans Petter Selasky * CL_INITIALIZED
409d6b92ffaSHans Petter Selasky * Indicates initialization was successful.
410d6b92ffaSHans Petter Selasky *
411d6b92ffaSHans Petter Selasky * CL_DESTROYING
412d6b92ffaSHans Petter Selasky * Indicates that the object is undergoing destruction.
413d6b92ffaSHans Petter Selasky *
414d6b92ffaSHans Petter Selasky * CL_DESTROYED
415d6b92ffaSHans Petter Selasky * Indicates that the object's destructor has already been called. Most
416d6b92ffaSHans Petter Selasky * objects set their final state to CL_DESTROYED before freeing the
417d6b92ffaSHans Petter Selasky * memory associated with the object.
418d6b92ffaSHans Petter Selasky *********/
419d6b92ffaSHans Petter Selasky
420d6b92ffaSHans Petter Selasky /****d* Component Library: Object States/cl_is_state_valid
421d6b92ffaSHans Petter Selasky * NAME
422d6b92ffaSHans Petter Selasky * cl_is_state_valid
423d6b92ffaSHans Petter Selasky *
424d6b92ffaSHans Petter Selasky * DESCRIPTION
425d6b92ffaSHans Petter Selasky * The cl_is_state_valid function returns whether a state has a valid value.
426d6b92ffaSHans Petter Selasky *
427d6b92ffaSHans Petter Selasky * SYNOPSIS
428d6b92ffaSHans Petter Selasky */
cl_is_state_valid(IN const cl_state_t state)429d6b92ffaSHans Petter Selasky static inline boolean_t cl_is_state_valid(IN const cl_state_t state)
430d6b92ffaSHans Petter Selasky {
431d6b92ffaSHans Petter Selasky return ((state == CL_UNINITIALIZED) || (state == CL_INITIALIZED) ||
432d6b92ffaSHans Petter Selasky (state == CL_DESTROYING) || (state == CL_DESTROYED));
433d6b92ffaSHans Petter Selasky }
434d6b92ffaSHans Petter Selasky
435d6b92ffaSHans Petter Selasky /*
436d6b92ffaSHans Petter Selasky * PARAMETERS
437d6b92ffaSHans Petter Selasky * state
438d6b92ffaSHans Petter Selasky * State whose value to validate.
439d6b92ffaSHans Petter Selasky *
440d6b92ffaSHans Petter Selasky * RETURN VALUES
441d6b92ffaSHans Petter Selasky * TRUE if the specified state has a valid value.
442d6b92ffaSHans Petter Selasky *
443d6b92ffaSHans Petter Selasky * FALSE otherwise.
444d6b92ffaSHans Petter Selasky *
445d6b92ffaSHans Petter Selasky * NOTES
446d6b92ffaSHans Petter Selasky * This function is used in debug builds to check for valid states. If an
447d6b92ffaSHans Petter Selasky * uninitialized object is passed, the memory for the state may cause the
448d6b92ffaSHans Petter Selasky * state to have an invalid value.
449d6b92ffaSHans Petter Selasky *
450d6b92ffaSHans Petter Selasky * SEE ALSO
451d6b92ffaSHans Petter Selasky * Object States
452d6b92ffaSHans Petter Selasky *********/
453d6b92ffaSHans Petter Selasky
454d6b92ffaSHans Petter Selasky END_C_DECLS
455d6b92ffaSHans Petter Selasky #endif /* _DATA_TYPES_H_ */
456