This commit was generated by cvs2svn to track changes on a CVS vendor
[external/binutils.git] / gdb / osf-share / cma_handle.h
1 /* 
2  * (c) Copyright 1990-1996 OPEN SOFTWARE FOUNDATION, INC.
3  * (c) Copyright 1990-1996 HEWLETT-PACKARD COMPANY
4  * (c) Copyright 1990-1996 DIGITAL EQUIPMENT CORPORATION
5  * (c) Copyright 1991, 1992 Siemens-Nixdorf Information Systems
6  * To anyone who acknowledges that this file is provided "AS IS" without
7  * any express or implied warranty: permission to use, copy, modify, and
8  * distribute this file for any purpose is hereby granted without fee,
9  * provided that the above copyright notices and this notice appears in
10  * all source code copies, and that none of the names listed above be used
11  * in advertising or publicity pertaining to distribution of the software
12  * without specific, written prior permission.  None of these organizations
13  * makes any representations about the suitability of this software for
14  * any purpose.
15  */
16 /*
17  *      Header file for handles
18  */
19
20 #ifndef CMA_HANDLE
21 #define CMA_HANDLE
22
23 /*
24  *  INCLUDE FILES
25  */
26
27 #include <cma_defs.h>
28 #include <cma_attr.h>
29
30 /*
31  * CONSTANTS AND MACROS
32  */
33
34 #define cma__validate_attr(handle) \
35     ((cma__t_int_attr *)cma__validate_handle ( \
36             (cma_t_handle *)(handle), \
37             cma__c_obj_attr))
38
39 #define cma__validate_cv(handle) \
40     ((cma__t_int_cv *)cma__validate_handle ( \
41             (cma_t_handle *)(handle), \
42             cma__c_obj_cv))
43
44 #define cma__validate_mutex(handle) \
45     ((cma__t_int_mutex *)cma__validate_handle ( \
46             (cma_t_handle *)(handle), \
47             cma__c_obj_mutex))
48
49 #define cma__validate_tcb(handle) \
50     ((cma__t_int_tcb *)cma__validate_handle ( \
51             (cma_t_handle *)(handle), \
52             cma__c_obj_tcb))
53
54 #define cma__validate_stack(handle) \
55     ((cma__t_int_stack *)cma__validate_handle ( \
56             (cma_t_handle *)(handle), \
57             cma__c_obj_stack))
58
59 #define cma__validate_null_attr(handle) \
60     ((cma__t_int_attr *)cma__validate_handle_null ( \
61             (cma_t_handle *)(handle), \
62             cma__c_obj_attr))
63
64 #define cma__validate_null_cv(handle) \
65     ((cma__t_int_cv *)cma__validate_handle_null ( \
66             (cma_t_handle *)(handle), \
67             cma__c_obj_cv))
68
69 #define cma__validate_null_mutex(handle) \
70     ((cma__t_int_mutex *)cma__validate_handle_null ( \
71             (cma_t_handle *)(handle), \
72             cma__c_obj_mutex))
73
74 #define cma__validate_null_tcb(handle) \
75     ((cma__t_int_tcb *)cma__validate_handle_null ( \
76             (cma_t_handle *)(handle), \
77             cma__c_obj_tcb))
78
79 #define cma__validate_null_stack(handle) \
80     ((cma__t_int_stack *)cma__validate_handle_null ( \
81             (cma_t_handle *)(handle), \
82             cma__c_obj_stack))
83
84 #define cma__val_attr_stat(handle,obj) \
85     cma__val_hand_stat ( \
86             (cma_t_handle *)(handle), \
87             cma__c_obj_attr, \
88             (cma__t_object **)obj)
89
90 #define cma__val_cv_stat(handle,obj) \
91     cma__val_hand_stat ( \
92             (cma_t_handle *)(handle), \
93             cma__c_obj_cv, \
94             (cma__t_object **)obj)
95
96 #define cma__val_mutex_stat(handle,obj) \
97     cma__val_hand_stat ( \
98             (cma_t_handle *)(handle), \
99             cma__c_obj_mutex, \
100             (cma__t_object **)obj)
101
102 #define cma__val_tcb_stat(handle) \
103     cma__val_hand_stat ( \
104             (cma_t_handle *)(handle), \
105             cma__c_obj_tcb, \
106             (cma__t_object **)obj)
107
108 #define cma__val_stack_stat(handle,obj) \
109     cma__val_hand_stat ( \
110             (cma_t_handle *)(handle), \
111             cma__c_obj_stack, \
112             (cma__t_object **)obj)
113
114 #define cma__val_nullattr_stat(handle,obj) \
115     cma__val_handnull_stat ( \
116             (cma_t_handle *)(handle), \
117             cma__c_obj_attr, \
118             (cma__t_object **)obj)
119
120 #define cma__val_nullcv_stat(handle,obj) \
121     cma__val_handnull_stat ( \
122             (cma_t_handle *)(handle), \
123             cma__c_obj_cv, \
124             (cma__t_object **)obj)
125
126 #define cma__val_nullmutex_stat(handle,obj) \
127     cma__val_handnull_stat ( \
128             (cma_t_handle *)(handle), \
129             cma__c_obj_mutex, \
130             (cma__t_object **)obj)
131
132 #define cma__val_nulltcb_stat(handle,obj) \
133     cma__val_handnull_stat ( \
134             (cma_t_handle *)(handle), \
135             cma__c_obj_tcb, \
136             (cma__t_object **)obj)
137
138 #define cma__val_nullstack_stat(handle) \
139     cma__val_handnull_stat ( \
140             (cma_t_handle *)(handle), \
141             cma__c_obj_stack, \
142             (cma__t_object **)obj)
143
144 /*
145  * TYPEDEFS
146  */
147
148 /*
149  * Internal format of a handle (to the outside world it's an array of two
150  * addresses, but we know better).
151  */
152 typedef struct CMA__T_INT_HANDLE {
153     cma__t_object       *pointer;       /* Address of internal structure */
154     cma__t_short        sequence;       /* Sequence number of object */
155     cma__t_short        type;           /* Type code of object */
156     } cma__t_int_handle;
157
158 /*
159  *  GLOBAL DATA
160  */
161
162 /*
163  * INTERNAL INTERFACES
164  */
165
166 extern void cma__clear_handle (cma_t_handle *);
167
168 extern void cma__object_to_handle (cma__t_object *,cma_t_handle *);
169
170 extern cma__t_int_attr * cma__validate_default_attr (cma_t_handle *);
171
172 extern cma_t_status cma__val_defattr_stat (cma_t_handle *,cma__t_int_attr **);
173
174 extern cma__t_object * cma__validate_handle (cma_t_handle *,cma_t_natural );
175
176 extern cma_t_status cma__val_hand_stat (cma_t_handle *,cma_t_natural,cma__t_object **);
177
178 extern  cma__t_object   *cma__validate_handle_null (cma_t_handle *,cma_t_natural);
179
180 extern cma_t_status cma__val_handnull_stat (cma_t_handle *,cma_t_natural,cma__t_object **);
181
182 #endif