bufmgr: Turn BUFFER_LOCK_* into an enum
authorAndres Freund <[email protected]>
Wed, 3 Dec 2025 23:38:20 +0000 (18:38 -0500)
committerAndres Freund <[email protected]>
Wed, 3 Dec 2025 23:38:20 +0000 (18:38 -0500)
It seems cleaner to use an enum to tie the different values together. It also
helps to have a more descriptive type in the argument to various functions.

Reviewed-by: Melanie Plageman <[email protected]>
Discussion: https://postgr.es/m/fvfmkr5kk4nyex56ejgxj3uzi63isfxovp2biecb4bspbjrze7@az2pljabhnff

src/backend/storage/buffer/bufmgr.c
src/include/storage/bufmgr.h
src/tools/pgindent/typedefs.list

index f373cead95f59648e28bab50b7bb66316261bbb2..00d9a23b67569f2e332d6ed48f5c48557df14786 100644 (file)
@@ -2866,7 +2866,7 @@ BufferIsLockedByMe(Buffer buffer)
  * Buffer must be pinned.
  */
 bool
-BufferIsLockedByMeInMode(Buffer buffer, int mode)
+BufferIsLockedByMeInMode(Buffer buffer, BufferLockMode mode)
 {
    BufferDesc *bufHdr;
 
@@ -5601,7 +5601,7 @@ UnlockBuffers(void)
  * Acquire or release the content_lock for the buffer.
  */
 void
-LockBuffer(Buffer buffer, int mode)
+LockBuffer(Buffer buffer, BufferLockMode mode)
 {
    BufferDesc *buf;
 
index 9f6785910e01b82dac437cf7036c362ec1d01b62..97c1124c12acf12f93c46a010eaf2e7fd663cfec 100644 (file)
@@ -200,9 +200,12 @@ extern PGDLLIMPORT int32 *LocalRefCount;
 /*
  * Buffer content lock modes (mode argument for LockBuffer())
  */
-#define BUFFER_LOCK_UNLOCK     0
-#define BUFFER_LOCK_SHARE      1
-#define BUFFER_LOCK_EXCLUSIVE  2
+typedef enum BufferLockMode
+{
+   BUFFER_LOCK_UNLOCK,
+   BUFFER_LOCK_SHARE,
+   BUFFER_LOCK_EXCLUSIVE,
+} BufferLockMode;
 
 
 /*
@@ -238,7 +241,7 @@ extern void WaitReadBuffers(ReadBuffersOperation *operation);
 extern void ReleaseBuffer(Buffer buffer);
 extern void UnlockReleaseBuffer(Buffer buffer);
 extern bool BufferIsLockedByMe(Buffer buffer);
-extern bool BufferIsLockedByMeInMode(Buffer buffer, int mode);
+extern bool BufferIsLockedByMeInMode(Buffer buffer, BufferLockMode mode);
 extern bool BufferIsDirty(Buffer buffer);
 extern void MarkBufferDirty(Buffer buffer);
 extern void IncrBufferRefCount(Buffer buffer);
@@ -299,7 +302,7 @@ extern void BufferGetTag(Buffer buffer, RelFileLocator *rlocator,
 extern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std);
 
 extern void UnlockBuffers(void);
-extern void LockBuffer(Buffer buffer, int mode);
+extern void LockBuffer(Buffer buffer, BufferLockMode mode);
 extern bool ConditionalLockBuffer(Buffer buffer);
 extern void LockBufferForCleanup(Buffer buffer);
 extern bool ConditionalLockBufferForCleanup(Buffer buffer);
index cf3f6a7dafd0d9ca5b0322438242e4cd1364710d..abcb3c4c4cce30a6b4c772a6dc371559e3ec63c1 100644 (file)
@@ -345,6 +345,7 @@ BufferCachePagesRec
 BufferDesc
 BufferDescPadded
 BufferHeapTupleTableSlot
+BufferLockMode
 BufferLookupEnt
 BufferManagerRelation
 BufferStrategyControl