2 * Copyright (c) 2005 MontaVista Software, Inc.
6 * Author: Steven Dake (sdake@mvista.com)
8 * This software licensed under BSD license, the text of which follows:
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.
35 #ifndef SALCK_H_DEFINED
36 #define SALCK_H_DEFINED
42 typedef SaUint64T SaLckHandleT
;
44 typedef SaUint64T SaLckLockIdT
;
46 typedef SaUint64T SaLckResourceHandleT
;
48 #define SA_LCK_LOCK_NO_QUEUE 0x1
49 #define SA_LCK_LOCK_ORPHAN 0x2
51 typedef SaUint32T SaLckLockFlagsT
;
53 #define SA_LCK_RESOURCE_CREATE 0x1
55 typedef SaUint32T SaLckResourceOpenFlagsT
;
58 SA_LCK_LOCK_GRANTED
= 1,
59 SA_LCK_LOCK_DEADLOCK
= 2,
60 SA_LCK_LOCK_NOT_QUEUED
= 3,
61 SA_LCK_LOCK_ORPHANED
= 4,
62 SA_LCK_LOCK_NO_MORE
= 5,
63 SA_LCK_LOCK_DUPLICATE_EX
= 6
67 SA_LCK_PR_LOCK_MODE
= 1,
68 SA_LCK_EX_LOCK_MODE
= 2
71 #define SA_LCK_OPT_ORPHAN_LOCKS 0x1
72 #define SA_LCK_OPT_DEADLOCK_DETECTION 0x2
74 typedef SaUint32T SaLckOptionsT
;
76 typedef SaUint64T SaLckWaiterSignalT
;
78 typedef void (*SaLckResourceOpenCallbackT
) (
79 SaInvocationT invocation
,
80 SaLckResourceHandleT lockResourceHandle
,
83 typedef void (*SaLckLockGrantcallbackT
) (
84 SaInvocationT invocation
,
85 SaLckLockStatusT lockStatus
,
88 typedef void (*SaLckLockWaiterCallbackT
) (
89 SaLckWaiterSignalT waiterSignal
,
91 SaLckLockModeT modeHeld
,
92 SaLckLockModeT modeRequested
);
94 typedef void (*SaLckResourceUnlockCallbackT
) (
95 SaInvocationT invocation
,
99 SaLckResourceOpenCallbackT saLckResourceOpenCallback
;
100 SaLckLockGrantcallbackT saLckLockGrantCallback
;
101 SaLckLockWaiterCallbackT saLckLockWaiterCallback
;
102 SaLckResourceUnlockCallbackT saLckResourceUnlockCallback
;
107 SaLckHandleT
*lckHandle
,
108 const SaLckCallbacksT
*lckCallbacks
,
109 SaVersionT
*version
);
112 saLckSelectionObjectGet (
113 SaLckHandleT lckHandle
,
114 SaSelectionObjectT
*selectionObject
);
118 SaLckHandleT lckHandle
,
119 SaLckOptionsT
*lckOptions
);
123 SaLckHandleT lckHandle
,
124 SaDispatchFlagsT dispatchFlags
);
128 SaLckHandleT lckHandle
);
132 SaLckHandleT lckHandle
,
133 const SaNameT
*lockResourceName
,
134 SaLckResourceOpenFlagsT resourceFlags
,
136 SaLckResourceHandleT
*lockResourceHandle
);
139 saLckResourceOpenAsync (
140 SaLckHandleT lckHandle
,
141 SaInvocationT invocation
,
142 const SaNameT
*lockResourceName
,
143 SaLckResourceOpenFlagsT resourceFlags
);
147 SaLckResourceHandleT lockResourceHandle
);
151 SaLckResourceHandleT lockResourceHandle
,
152 SaLckLockIdT
*lockId
,
153 SaLckLockModeT lockMode
,
154 SaLckLockFlagsT lockFlags
,
155 SaLckWaiterSignalT waiterSignal
,
157 SaLckLockStatusT
*lockStatus
);
160 saLckResourceLockAsync (
161 SaLckResourceHandleT lockResourceHandle
,
162 SaInvocationT invocation
,
163 SaLckLockIdT
*lockId
,
164 SaLckLockModeT lockMode
,
165 SaLckLockFlagsT lockFlags
,
166 SaLckWaiterSignalT waiterSignal
);
169 saLckResourceUnlock (
174 saLckResourceUnlockAsync (
175 SaInvocationT invocation
,
176 SaLckLockIdT lockId
);
180 SaLckResourceHandleT lockResourceHandle
);
182 #endif /* SALCK_H_DEFINED */