bufmgr: Turn BUFFER_LOCK_* into an enum

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 <melanieplageman@gmail.com>
Discussion: https://postgr.es/m/fvfmkr5kk4nyex56ejgxj3uzi63isfxovp2biecb4bspbjrze7@az2pljabhnff
pull/256/head
Andres Freund 2 weeks ago
parent 8d61228717
commit 156680055d
  1. 4
      src/backend/storage/buffer/bufmgr.c
  2. 13
      src/include/storage/bufmgr.h
  3. 1
      src/tools/pgindent/typedefs.list

@ -2866,7 +2866,7 @@ BufferIsLockedByMe(Buffer buffer)
* Buffer must be pinned. * Buffer must be pinned.
*/ */
bool bool
BufferIsLockedByMeInMode(Buffer buffer, int mode) BufferIsLockedByMeInMode(Buffer buffer, BufferLockMode mode)
{ {
BufferDesc *bufHdr; BufferDesc *bufHdr;
@ -5601,7 +5601,7 @@ UnlockBuffers(void)
* Acquire or release the content_lock for the buffer. * Acquire or release the content_lock for the buffer.
*/ */
void void
LockBuffer(Buffer buffer, int mode) LockBuffer(Buffer buffer, BufferLockMode mode)
{ {
BufferDesc *buf; BufferDesc *buf;

@ -200,9 +200,12 @@ extern PGDLLIMPORT int32 *LocalRefCount;
/* /*
* Buffer content lock modes (mode argument for LockBuffer()) * Buffer content lock modes (mode argument for LockBuffer())
*/ */
#define BUFFER_LOCK_UNLOCK 0 typedef enum BufferLockMode
#define BUFFER_LOCK_SHARE 1 {
#define BUFFER_LOCK_EXCLUSIVE 2 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 ReleaseBuffer(Buffer buffer);
extern void UnlockReleaseBuffer(Buffer buffer); extern void UnlockReleaseBuffer(Buffer buffer);
extern bool BufferIsLockedByMe(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 bool BufferIsDirty(Buffer buffer);
extern void MarkBufferDirty(Buffer buffer); extern void MarkBufferDirty(Buffer buffer);
extern void IncrBufferRefCount(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 MarkBufferDirtyHint(Buffer buffer, bool buffer_std);
extern void UnlockBuffers(void); extern void UnlockBuffers(void);
extern void LockBuffer(Buffer buffer, int mode); extern void LockBuffer(Buffer buffer, BufferLockMode mode);
extern bool ConditionalLockBuffer(Buffer buffer); extern bool ConditionalLockBuffer(Buffer buffer);
extern void LockBufferForCleanup(Buffer buffer); extern void LockBufferForCleanup(Buffer buffer);
extern bool ConditionalLockBufferForCleanup(Buffer buffer); extern bool ConditionalLockBufferForCleanup(Buffer buffer);

@ -345,6 +345,7 @@ BufferCachePagesRec
BufferDesc BufferDesc
BufferDescPadded BufferDescPadded
BufferHeapTupleTableSlot BufferHeapTupleTableSlot
BufferLockMode
BufferLookupEnt BufferLookupEnt
BufferManagerRelation BufferManagerRelation
BufferStrategyControl BufferStrategyControl

Loading…
Cancel
Save