diff options
| author | Alvaro Herrera | 2024-03-20 10:46:11 +0000 |
|---|---|---|
| committer | Alvaro Herrera | 2024-03-20 10:55:20 +0000 |
| commit | da952b415f4444fcc85ea79c3f006af142d3c90a (patch) | |
| tree | a2467107f000c93367df5041701d8dc401b3ed9a /src/include | |
| parent | e5da0fe3c22b34c4433f1729e88495554b5331ed (diff) | |
Rework lwlocknames.txt to become lwlocklist.h
This way, we can fold the list of lock names to occur in
BuiltinTrancheNames instead of having its own separate array. This
saves two lines of code in GetLWTrancheName and some space in
BuiltinTrancheNames, as foreseen in commit 74a730631065, as well as
removing the need for a separate lwlocknames.c file.
We still have to build lwlocknames.h using Perl code, which initially I
wanted to avoid, but it gives us the chance to cross-check
wait_event_names.txt.
Discussion: https://postgr.es/m/202401231025.gbv4nnte5fmm@alvherre.pgsql
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/storage/lwlock.h | 4 | ||||
| -rw-r--r-- | src/include/storage/lwlocklist.h | 85 | ||||
| -rw-r--r-- | src/include/storage/meson.build | 12 |
3 files changed, 91 insertions, 10 deletions
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h index 10bea8c5950..3479b4cf522 100644 --- a/src/include/storage/lwlock.h +++ b/src/include/storage/lwlock.h @@ -19,6 +19,7 @@ #endif #include "port/atomics.h" +#include "storage/lwlocknames.h" #include "storage/proclist_types.h" struct PGPROC; @@ -82,9 +83,6 @@ typedef struct NamedLWLockTranche extern PGDLLIMPORT NamedLWLockTranche *NamedLWLockTrancheArray; extern PGDLLIMPORT int NamedLWLockTrancheRequests; -/* Names for fixed lwlocks */ -#include "storage/lwlocknames.h" - /* * It's a bit odd to declare NUM_BUFFER_PARTITIONS and NUM_LOCK_PARTITIONS * here, but we need them to figure out offsets within MainLWLockArray, and diff --git a/src/include/storage/lwlocklist.h b/src/include/storage/lwlocklist.h new file mode 100644 index 00000000000..85f6568b9e4 --- /dev/null +++ b/src/include/storage/lwlocklist.h @@ -0,0 +1,85 @@ +/*------------------------------------------------------------------------- + * + * lwlocklist.h + * + * The predefined LWLock list is kept in its own source file for use by + * automatic tools. The exact representation of a keyword is determined by + * the PG_LWLOCK macro, which is not defined in this file; it can be + * defined by the caller for special purposes. + * + * Also, generate-lwlocknames.pl processes this file to create lwlocknames.h. + * + * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/include/storage/lwlocklist.h + * + *------------------------------------------------------------------------- + */ + +/* + * Some commonly-used locks have predefined positions within MainLWLockArray; + * these are defined here. If you add a lock, add it to the end to avoid + * renumbering the existing locks; if you remove a lock, consider leaving a gap + * in the numbering sequence for the benefit of DTrace and other external + * debugging scripts. Also, do not forget to update the section + * WaitEventLWLock of src/backend/utils/activity/wait_event_names.txt. + * + * Note that the names here don't include the Lock suffix, to appease the + * C preprocessor; it's added elsewhere. + */ + +/* 0 is available; was formerly BufFreelistLock */ +PG_LWLOCK(1, ShmemIndex) +PG_LWLOCK(2, OidGen) +PG_LWLOCK(3, XidGen) +PG_LWLOCK(4, ProcArray) +PG_LWLOCK(5, SInvalRead) +PG_LWLOCK(6, SInvalWrite) +PG_LWLOCK(7, WALBufMapping) +PG_LWLOCK(8, WALWrite) +PG_LWLOCK(9, ControlFile) +/* 10 was CheckpointLock */ +/* 11 was XactSLRULock */ +/* 12 was SubtransSLRULock */ +PG_LWLOCK(13, MultiXactGen) +/* 14 was MultiXactOffsetSLRULock */ +/* 15 was MultiXactMemberSLRULock */ +PG_LWLOCK(16, RelCacheInit) +PG_LWLOCK(17, CheckpointerComm) +PG_LWLOCK(18, TwoPhaseState) +PG_LWLOCK(19, TablespaceCreate) +PG_LWLOCK(20, BtreeVacuum) +PG_LWLOCK(21, AddinShmemInit) +PG_LWLOCK(22, Autovacuum) +PG_LWLOCK(23, AutovacuumSchedule) +PG_LWLOCK(24, SyncScan) +PG_LWLOCK(25, RelationMapping) +/* 26 was NotifySLRULock */ +PG_LWLOCK(27, NotifyQueue) +PG_LWLOCK(28, SerializableXactHash) +PG_LWLOCK(29, SerializableFinishedList) +PG_LWLOCK(30, SerializablePredicateList) +/* 31 was SerialSLRULock */ +PG_LWLOCK(32, SyncRep) +PG_LWLOCK(33, BackgroundWorker) +PG_LWLOCK(34, DynamicSharedMemoryControl) +PG_LWLOCK(35, AutoFile) +PG_LWLOCK(36, ReplicationSlotAllocation) +PG_LWLOCK(37, ReplicationSlotControl) +/* 38 was CommitTsSLRULock */ +PG_LWLOCK(39, CommitTs) +PG_LWLOCK(40, ReplicationOrigin) +PG_LWLOCK(41, MultiXactTruncation) +/* 42 was OldSnapshotTimeMapLock */ +PG_LWLOCK(43, LogicalRepWorker) +PG_LWLOCK(44, XactTruncation) +/* 45 was XactTruncationLock until removal of BackendRandomLock */ +PG_LWLOCK(46, WrapLimitsVacuum) +PG_LWLOCK(47, NotifyQueueTail) +PG_LWLOCK(48, WaitEventExtension) +PG_LWLOCK(49, WALSummarizer) +PG_LWLOCK(50, DSMRegistry) +PG_LWLOCK(51, InjectionPoint) +PG_LWLOCK(52, SerialControl) diff --git a/src/include/storage/meson.build b/src/include/storage/meson.build index 666fb22408e..f889093117e 100644 --- a/src/include/storage/meson.build +++ b/src/include/storage/meson.build @@ -1,10 +1,10 @@ # Copyright (c) 2022-2024, PostgreSQL Global Development Group -lwlocknames = custom_target('lwlocknames', +lwlocknames_h = custom_target('lwlocknames_h', input: files( - '../../backend/storage/lmgr/lwlocknames.txt', + '../../include/storage/lwlocklist.h', '../../backend/utils/activity/wait_event_names.txt'), - output: ['lwlocknames.h', 'lwlocknames.c'], + output: ['lwlocknames.h'], command: [ perl, files('../../backend/storage/lmgr/generate-lwlocknames.pl'), '-o', '@OUTDIR@', @@ -12,12 +12,10 @@ lwlocknames = custom_target('lwlocknames', ], build_by_default: true, install: true, - install_dir: [dir_include_server / 'storage', false], + install_dir: dir_include_server / 'storage', ) -lwlocknames_h = lwlocknames[0] - generated_backend_headers += lwlocknames_h # autoconf generates the file there, ensure we get a conflict -generated_sources_ac += {'src/backend/storage/lmgr': ['lwlocknames.c', 'lwlocknames.h']} +generated_sources_ac += {'src/backend/storage/lmgr': ['lwlocknames.h']} |
