Patch to add new api to logsys to get priority names from subsystem names.
[openais.git] / include / ais_util.h
blob7b7db6e336ec57863094e6bb428c5450a8feb7a0
1 /*
2 * Copyright (c) 2002-2005 MontaVista Software, Inc.
4 * All rights reserved.
6 * Author: Steven Dake (sdake@mvista.com)
8 * This software licensed under BSD license, the text of which follows:
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
13 * - Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 * - Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 * - Neither the name of the MontaVista Software, Inc. nor the names of its
19 * contributors may be used to endorse or promote products derived from this
20 * software without specific prior written permission.
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE.
34 #ifndef AIS_UTIL_H_DEFINED
35 #define AIS_UTIL_H_DEFINED
37 #include <pthread.h>
38 #include <sys/poll.h>
39 #include <sys/socket.h>
41 #include <ipc_gen.h>
43 /* Debug macro
45 #ifdef DEBUG
46 #define DPRINT(s) printf s
47 #else
48 #define DPRINT(s)
49 #endif
51 #ifdef SO_NOSIGPIPE
52 #ifndef MSG_NOSIGNAL
53 #define MSG_NOSIGNAL 0
54 #endif
55 void socket_nosigpipe(int s);
56 #else
57 #define socket_nosigpipe(s)
58 #endif
60 struct saHandleDatabase {
61 unsigned int handleCount;
62 struct saHandle *handles;
63 pthread_mutex_t mutex;
64 void (*handleInstanceDestructor) (void *);
68 struct saVersionDatabase {
69 int versionCount;
70 SaVersionT *versionsSupported;
73 SaAisErrorT saSendMsgRetry (
74 int s,
75 struct iovec *iov,
76 int iov_len);
78 SaAisErrorT saSendMsgReceiveReply (
79 int s,
80 struct iovec *iov,
81 int iov_len,
82 void *responseMessage,
83 int responseLen);
85 SaAisErrorT saSendReceiveReply (
86 int s,
87 void *requestMessage,
88 int requestLen,
89 void *responseMessage,
90 int responseLen);
92 SaAisErrorT
93 saPollRetry (
94 struct pollfd *ufds,
95 unsigned int nfds,
96 int timeout);
98 SaAisErrorT
99 saHandleCreate (
100 struct saHandleDatabase *handleDatabase,
101 int instanceSize,
102 SaUint64T *handleOut);
104 SaAisErrorT
105 saHandleDestroy (
106 struct saHandleDatabase *handleDatabase,
107 SaUint64T handle);
109 SaAisErrorT
110 saHandleInstanceGet (
111 struct saHandleDatabase *handleDatabase,
112 SaUint64T handle,
113 void **instance);
115 SaAisErrorT
116 saHandleInstancePut (
117 struct saHandleDatabase *handleDatabase,
118 SaUint64T handle);
120 SaAisErrorT
121 saVersionVerify (
122 struct saVersionDatabase *versionDatabase,
123 SaVersionT *version);
125 #define offset_of(type,member) (int)(&(((type *)0)->member))
127 SaTimeT
128 clustTimeNow(void);
130 extern SaAisErrorT saServiceConnect (
131 int *responseOut, int *callbackOut, enum service_types service);
133 extern SaAisErrorT saRecvRetry (int s, void *msg, size_t len);
135 extern SaAisErrorT saSendRetry (int s, const void *msg, size_t len);
137 #endif /* AIS_UTIL_H_DEFINED */