ais_lock.h

来自「linux集群服务器软件代码包」· C头文件 代码 · 共 116 行

H
116
字号
#ifndef _AIS_LOCK_H_#define _AIS_LOCK_H_ #include "ais_base.h"/* Chapter 10 */typedef OPAQUE_TYPE SaLckHandleT;typedef OPAQUE_TYPE SaLckLockIdT;typedef OPAQUE_TYPE SaLckResourceIdT;#define SA_LCK_LOCK_NO_QUEUE 0x1#define SA_LCK_LOCK_ORPHAN 0x2#define SA_LCK_LOCK_TIMEOUT 0X4typedef SaUint32T SaLckLockFlagsT;typedef enum {    SA_LCK_LOCK_GRANTED = 1,    SA_LCK_LOCK_RELEASED = 2,    SA_LCK_LOCK_DEADLOCK = 3,    SA_LCK_LOCK_NOT_QUEUED = 4,    SA_LCK_LOCK_TIMED_OUT = 5,    SA_LCK_LOCK_ORPHANED = 6,    SA_LCK_LOCK_NO_MORE = 7} SaLckLockStatusT;typedef enum {    SA_LCK_PR_LOCK_MODE = 1,    SA_LCK_EX_LOCK_MODE = 2} SaLckLockModeT;typedef void (*SaLckLockGrantCallbackT)(SaInvocationT invocation,                           const SaLckResourceIdT *resourceId,                           const SaLckLockIdT *lockId,                           SaLckLockModeT lockMode,                           SaLckLockStatusT lockStatus,                           SaErrorT error);typedef void (*SaLckLockWaiterCallbackT)(SaInvocationT invocation,                            const SaLckResourceIdT *resourceId,                            const SaLckLockIdT *lockId,                            SaLckLockModeT modeHeld,                            SaLckLockModeT modeRequested);typedef void (*SaLckResourceUnlockCallbackT)(SaInvocationT invocation,                                const SaLckResourceIdT *resourceId,                                const SaLckLockIdT *lockId,                                SaLckLockStatusT lockStatus,                                SaErrorT error);typedef struct{    SaLckLockGrantCallbackT saLckLockGrantCallback;    SaLckLockWaiterCallbackT saLckLockWaiterCallback;    SaLckResourceUnlockCallbackT saLckResourceUnlockCallback;} SaLckCallbacksT;    SaErrorT saLckInitialize(SaLckHandleT *lckHandle, const SaLckCallbacksT *lckCallbacks,                const SaVersionT *version);    SaErrorT saLckSelectionObjectGet(const SaLckHandleT *lckHandle,                        SaSelectionObjectT *selectionObject);    SaErrorT saLckDispatch(const SaLckHandleT *lckHandle,              const SaDispatchFlagsT dispatchFlags);    SaErrorT saLckFinalize(SaLckHandleT *lckHandle);    SaErrorT saLckResourceOpen(const SaLckHandleT *lckHandle,                  const SaNameT *lockName,                  SaLckResourceIdT *resourceId);    SaErrorT saLckResourceClose(SaLckHandleT *lckHandle, SaLckResourceIdT *resourceId);    SaErrorT saLckResourceLock(const SaLckHandleT *lckHandle, SaInvocationT invocation,                  const SaLckResourceIdT *resourceId,                  SaLckLockIdT *lockId,                  SaLckLockModeT lockMode,                  SaLckLockFlagsT lockFlags,                  SaTimeT timeout,                  SaLckLockStatusT *lockStatus);    SaErrorTSaLckResourceLockAsync(const SaLckHandleT *lckHandle,                       SaInvocationT invocation,                       const SaLckResourceIdT *resourceId,                       SaLckLockIdT *lockId,                       SaLckLockModeT lockMode,                       SaLckLockFlagsT lockFlags,                       SaTimeT timeout);    SaErrorT saLckResourceUnlock(const SaLckHandleT *lckHandle,                    SaLckLockIdT *lockId,                    SaTimeT timeout);    SaErrorT saLckResourceUnlockAsync(const SaLckHandleT *lckHandle,                         SaInvocationT invocation,                         const SaLckLockIdT *lockId);    SaErrorTsaLckLockPurge(const SaLckHandleT *lckHandle,               const SaLckResourceIdT *resourceId);#endif /* _AIS_LOCK_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?