comparison packages/net/snmp/lib/current/include/mt_support.h @ 103:95f3e12a6327 ecos-sw-2000-06-23

Merge from eCos master repository on 2000-06-23-16:41:10-BST
author jlarmour
date Fri, 23 Jun 2000 17:06:31 +0000
parents
children e0c0827131d1
comparison
equal deleted inserted replaced
102:6409b6d94dd7 103:95f3e12a6327
1 //==========================================================================
2 //
3 // ./lib/current/include/mt_support.h
4 //
5 //
6 //==========================================================================
7 //####COPYRIGHTBEGIN####
8 //
9 // -------------------------------------------
10 // The contents of this file are subject to the Red Hat eCos Public License
11 // Version 1.1 (the "License"); you may not use this file except in
12 // compliance with the License. You may obtain a copy of the License at
13 // http://www.redhat.com/
14 //
15 // Software distributed under the License is distributed on an "AS IS"
16 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
17 // License for the specific language governing rights and limitations under
18 // the License.
19 //
20 // The Original Code is eCos - Embedded Configurable Operating System,
21 // released September 30, 1998.
22 //
23 // The Initial Developer of the Original Code is Red Hat.
24 // Portions created by Red Hat are
25 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
26 // All Rights Reserved.
27 // -------------------------------------------
28 //
29 //####COPYRIGHTEND####
30 //####UCDSNMPCOPYRIGHTBEGIN####
31 //
32 // -------------------------------------------
33 //
34 // Portions of this software may have been derived from the UCD-SNMP
35 // project, <http://ucd-snmp.ucdavis.edu/> from the University of
36 // California at Davis, which was originally based on the Carnegie Mellon
37 // University SNMP implementation. Portions of this software are therefore
38 // covered by the appropriate copyright disclaimers included herein.
39 //
40 // The release used was version 4.1.2 of May 2000. "ucd-snmp-4.1.2"
41 // -------------------------------------------
42 //
43 //####UCDSNMPCOPYRIGHTEND####
44 //==========================================================================
45 //#####DESCRIPTIONBEGIN####
46 //
47 // Author(s): hmt
48 // Contributors: hmt
49 // Date: 2000-05-30
50 // Purpose: Port of UCD-SNMP distribution to eCos.
51 // Description:
52 //
53 //
54 //####DESCRIPTIONEND####
55 //
56 //==========================================================================
57 /********************************************************************
58 Copyright 1989, 1991, 1992 by Carnegie Mellon University
59
60 Derivative Work -
61 Copyright 1996, 1998, 1999, 2000 The Regents of the University of California
62
63 All Rights Reserved
64
65 Permission to use, copy, modify and distribute this software and its
66 documentation for any purpose and without fee is hereby granted,
67 provided that the above copyright notice appears in all copies and
68 that both that copyright notice and this permission notice appear in
69 supporting documentation, and that the name of CMU and The Regents of
70 the University of California not be used in advertising or publicity
71 pertaining to distribution of the software without specific written
72 permission.
73
74 CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL
75 WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
76 WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CMU OR
77 THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL,
78 INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
79 FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
80 CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
81 CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
82 *********************************************************************/
83
84 /* mt_support.h - multi-thread resource locking support declarations */
85 /*
86 * Author: Markku Laukkanen
87 * Created: 6-Sep-1999
88 * History:
89 * 8-Sep-1999 M. Slifcak method names changed;
90 * use array of resource locking structures.
91 */
92
93 #ifndef MT_SUPPORT_H
94 #define MT_SUPPORT_H
95
96 #ifdef __cplusplus
97 extern "C" {
98 #endif
99
100 /* Lock group identifiers */
101
102 #define MT_LIBRARY_ID 0
103 #define MT_APPLICATION_ID 1
104 #define MT_TOKEN_ID 2
105
106 #define MT_MAX_IDS 3 /* one greater than last from above */
107 #define MT_MAX_SUBIDS 10
108
109
110 /* Lock resource identifiers for library resources */
111
112 #define MT_LIB_NONE 0
113 #define MT_LIB_SESSION 1
114 #define MT_LIB_REQUESTID 2
115 #define MT_LIB_MESSAGEID 3
116 #define MT_LIB_SESSIONID 4
117 #define MT_LIB_TRANSID 5
118
119 #define MT_LIB_MAXIMUM 6 /* must be one greater than the last one */
120
121
122 #ifdef _REENTRANT
123
124 #if HAVE_PTHREAD_H
125
126 #include <pthread.h>
127 typedef pthread_mutex_t mutex_type;
128 #ifdef pthread_mutexattr_default
129 #define MT_MUTEX_INIT_DEFAULT pthread_mutexattr_default
130 #else
131 #define MT_MUTEX_INIT_DEFAULT 0
132 #endif
133
134 #elif defined(WIN32) || defined(cygwin)
135
136 #include <windows.h>
137 typedef CRITICAL_SECTION mutex_type;
138
139 #else
140 error "There is no re-entrant support as defined."
141 #endif
142
143 int snmp_res_init(void);
144 int snmp_res_lock(int groupID, int resourceID);
145 int snmp_res_unlock(int groupID, int resourceID);
146 int snmp_res_destroy_mutex(int groupID, int resourceID);
147
148 #else /* !_REENTRANT */
149
150 #define snmp_res_init() do {} while (0)
151 #define snmp_res_lock(x,y) do {} while (0)
152 #define snmp_res_unlock(x,y) do {} while (0)
153 #define snmp_res_destroy_mutex(x,y) do {} while (0)
154
155 #endif /* !_REENTRANT */
156
157 #ifdef __cplusplus
158 }
159 #endif
160
161 #endif /* MT_SUPPORT_H */
162