diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/storage/lock.h | 14 | ||||
| -rw-r--r-- | src/include/storage/proc.h | 15 |
2 files changed, 13 insertions, 16 deletions
diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index 39eefac0ca6..0ada6eaccfe 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: lock.h,v 1.43 2001/01/24 19:43:27 momjian Exp $ + * $Id: lock.h,v 1.44 2001/01/25 03:31:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -247,6 +247,7 @@ typedef struct HOLDER extern void InitLocks(void); extern void LockDisable(bool status); extern bool LockingDisabled(void); +extern LOCKMETHODTABLE *GetLocksMethodTable(LOCK *lock); extern LOCKMETHOD LockMethodTableInit(char *tabName, LOCKMASK *conflictsP, int *prioP, int numModes, int maxBackends); extern LOCKMETHOD LockMethodTableRename(LOCKMETHOD lockmethod); @@ -256,12 +257,15 @@ extern bool LockRelease(LOCKMETHOD lockmethod, LOCKTAG *locktag, TransactionId xid, LOCKMODE lockmode); extern bool LockReleaseAll(LOCKMETHOD lockmethod, PROC *proc, bool allxids, TransactionId xid); -extern int LockResolveConflicts(LOCKMETHOD lockmethod, LOCKMODE lockmode, - LOCK *lock, HOLDER *holder, PROC *proc, - int *myHolding); +extern int LockCheckConflicts(LOCKMETHODTABLE *lockMethodTable, + LOCKMODE lockmode, + LOCK *lock, HOLDER *holder, PROC *proc, + int *myHolding); extern void GrantLock(LOCK *lock, HOLDER *holder, LOCKMODE lockmode); +extern void RemoveFromWaitQueue(PROC *proc); extern int LockShmemSize(int maxBackends); -extern bool DeadLockCheck(PROC *thisProc, LOCK *findlock); +extern bool DeadLockCheck(PROC *proc); +extern void InitDeadLockChecking(void); #ifdef LOCK_DEBUG extern void DumpLocks(void); diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 3f8902e7d37..4dd5a8c2a67 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: proc.h,v 1.38 2001/01/24 19:43:28 momjian Exp $ + * $Id: proc.h,v 1.39 2001/01/25 03:31:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ struct proc SHM_QUEUE links; /* list link if process is in a list */ SEMA sem; /* ONE semaphore to sleep on */ - int errType; /* error code tells why we woke up */ + int errType; /* STATUS_OK or STATUS_ERROR after wakeup */ TransactionId xid; /* transaction currently being executed by * this proc */ @@ -86,13 +86,6 @@ do { \ if (MyProc) (MyProc->sLocks[(lock)])--; \ } while (0) -/* - * flags explaining why process woke up - */ -#define NO_ERROR 0 -#define ERR_TIMEOUT 1 -#define ERR_BUFFER_IO 2 - /* * There is one ProcGlobal struct for the whole installation. @@ -134,10 +127,10 @@ extern void ProcReleaseLocks(bool isCommit); extern bool ProcRemove(int pid); extern void ProcQueueInit(PROC_QUEUE *queue); -extern int ProcSleep(LOCKMETHODCTL *lockctl, LOCKMODE lockmode, +extern int ProcSleep(LOCKMETHODTABLE *lockMethodTable, LOCKMODE lockmode, LOCK *lock, HOLDER *holder); extern PROC *ProcWakeup(PROC *proc, int errType); -extern int ProcLockWakeup(LOCKMETHOD lockmethod, LOCK *lock); +extern void ProcLockWakeup(LOCKMETHODTABLE *lockMethodTable, LOCK *lock); extern void ProcReleaseSpins(PROC *proc); extern bool LockWaitCancel(void); extern void HandleDeadLock(SIGNAL_ARGS); |
