From 51d7e25651731836a8da89720c2180f82bc88096 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 26 Aug 2004 17:22:28 +0000
Subject: [PATCH] Improve some comments.

---
 src/include/storage/lock.h | 45 +++++++++++++++++++++-----------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h
index 1289fee7eca..0c0c66077f7 100644
--- a/src/include/storage/lock.h
+++ b/src/include/storage/lock.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/storage/lock.h,v 1.79 2004/07/17 03:31:26 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/storage/lock.h,v 1.80 2004/08/26 17:22:28 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -26,10 +26,10 @@ typedef struct PROC_QUEUE
 	int			size;			/* number of entries in list */
 } PROC_QUEUE;
 
-/* struct PGPROC is declared in storage/proc.h, but must forward-reference it */
+/* struct PGPROC is declared in proc.h, but must forward-reference it */
 typedef struct PGPROC PGPROC;
 
-
+/* GUC variables */
 extern int	max_locks_per_xact;
 
 #ifdef LOCK_DEBUG
@@ -41,6 +41,11 @@ extern bool Debug_deadlocks;
 #endif   /* LOCK_DEBUG */
 
 
+/*
+ * LOCKMODE is an integer (1..N) indicating a lock type.  LOCKMASK is a bit
+ * mask indicating a set of held or requested lock types (the bit 1<<mode
+ * corresponds to a particular lock mode).
+ */
 typedef int LOCKMASK;
 typedef int LOCKMODE;
 /* MAX_LOCKMODES cannot be larger than the # of bits in LOCKMASK */
@@ -49,6 +54,11 @@ typedef int LOCKMODE;
 #define LOCKBIT_ON(lockmode) (1 << (lockmode))
 #define LOCKBIT_OFF(lockmode) (~(1 << (lockmode)))
 
+/*
+ * There is normally only one lock method, the default one.
+ * If user locks are enabled, an additional lock method is present.
+ * Lock methods are identified by LOCKMETHODID.
+ */
 typedef uint16 LOCKMETHODID;
 /* MAX_LOCK_METHODS is the number of distinct lock control tables allowed */
 #define MAX_LOCK_METHODS	3
@@ -60,18 +70,13 @@ typedef uint16 LOCKMETHODID;
 #define LockMethodIsValid(lockmethodid) ((lockmethodid) != INVALID_LOCKMETHOD)
 
 /*
- * There is normally only one lock method, the default one.
- * If user locks are enabled, an additional lock method is present.
- *
- * This is the control structure for a lock table.	It
- * lives in shared memory.	This information is the same
- * for all backends.
+ * This is the control structure for a lock table. It lives in shared
+ * memory.  Currently, none of these fields change after startup.  In addition
+ * to the LockMethodData, a lock table has a "lockHash" table holding
+ * per-locked-object lock information, and a "proclockHash" table holding
+ * per-lock-holder/waiter lock information.
  *
- * lockHash -- hash table holding per-locked-object lock information
- *
- * proclockHash -- hash table holding per-lock-waiter/holder lock information
- *
- * lockmethod -- the handle used by the lock table's clients to
+ * lockmethodid -- the handle used by the lock table's clients to
  *		refer to the type of lock table being used.
  *
  * numLockModes -- number of lock types (READ,WRITE,etc) that
@@ -81,8 +86,7 @@ typedef uint16 LOCKMETHODID;
  *		type conflicts. conflictTab[i] is a mask with the j-th bit
  *		turned on if lock types i and j conflict.
  *
- * masterLock -- synchronizes access to the table
- *
+ * masterLock -- LWLock used to synchronize access to the table
  */
 typedef struct LockMethodData
 {
@@ -156,12 +160,13 @@ typedef struct LOCK
 
 /*
  * We may have several different transactions holding or awaiting locks
- * on the same lockable object.  We need to store some per-waiter/holder
- * information for each such holder (or would-be holder).
+ * on the same lockable object.  We need to store some per-holder/waiter
+ * information for each such holder (or would-be holder).  This is kept in
+ * a PROCLOCK struct.
  *
  * PROCLOCKTAG is the key information needed to look up a PROCLOCK item in the
- * proclock hashtable.	A PROCLOCKTAG value uniquely identifies a lock
- * holder/waiter.
+ * proclock hashtable.	A PROCLOCKTAG value uniquely identifies the combination
+ * of a lockable object and a holder/waiter for that object.
  *
  * There are two possible kinds of proclock tags: a transaction (identified
  * both by the PGPROC of the backend running it, and the xact's own ID) and
-- 
GitLab