8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-31 12:43:02 +01:00
firebird-mirror/src/lock/lock_proto.h
dimitr 49d23b6d22 Major changes in the lock manager, targeted to allow mixed in-process/cross-process working modes. Namely, they are:
1) Separate process and owner blocks. Multiplex blocking signals via single blocking thread.
2) Enable direct in-process AST delivery.
3) Drop PREVENT_OWNER_STARVATION code as not compatible with the new LM structure.
4) Synchronize LM using its own mutex instead of SCH.
5) Implement wakeup'n'remap code for waiting owners.
6) Add more debugging points for memory remaps.
7) Cleanup and style.
Hopefully, this attempt is more POSIX-friendly than my previous one.
2008-02-11 17:30:23 +00:00

42 lines
1.5 KiB
C

/*
* PROGRAM: JRD Lock Manager
* MODULE: lock_proto.h
* DESCRIPTION: Prototype header file for lock.cpp
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef LOCK_LOCK_PROTO_H
#define LOCK_LOCK_PROTO_H
bool LOCK_convert(SLONG, UCHAR, SSHORT, lock_ast_t, void*, ISC_STATUS*);
bool LOCK_deq(SLONG);
UCHAR LOCK_downgrade(SLONG, ISC_STATUS *);
SLONG LOCK_enq(SLONG, SLONG, const USHORT, const UCHAR*, const USHORT, UCHAR,
lock_ast_t, void*, SLONG, SSHORT, ISC_STATUS*, SLONG);
bool LOCK_set_owner_handle(SLONG, SLONG);
void LOCK_fini(ISC_STATUS*, SLONG *);
bool LOCK_init(ISC_STATUS*, LOCK_OWNER_T, UCHAR, SLONG *);
SLONG LOCK_query_data(SLONG, USHORT, USHORT);
SLONG LOCK_read_data(SLONG);
SLONG LOCK_read_data2(SLONG, USHORT, const UCHAR*, USHORT, SLONG);
void LOCK_re_post(lock_ast_t, void*, SLONG);
SLONG LOCK_write_data(SLONG, SLONG);
#endif /* LOCK_LOCK_PROTO_H */