{
ClogCtl->PagePrecedes = CLOGPagePrecedes;
SimpleLruInit(ClogCtl, "clog", CLOGShmemBuffers(), CLOG_LSNS_PER_PAGE,
- CLogControlLock, "pg_clog");
+ CLogControlLock, "pg_clog", LWTRANCHE_CLOG_BUFFERS);
}
/*
CommitTsCtl->PagePrecedes = CommitTsPagePrecedes;
SimpleLruInit(CommitTsCtl, "commit_timestamp", CommitTsShmemBuffers(), 0,
- CommitTsControlLock, "pg_commit_ts");
+ CommitTsControlLock, "pg_commit_ts",
+ LWTRANCHE_COMMITTS_BUFFERS);
commitTsShared = ShmemInitStruct("CommitTs shared",
sizeof(CommitTimestampShared),
SimpleLruInit(MultiXactOffsetCtl,
"multixact_offset", NUM_MXACTOFFSET_BUFFERS, 0,
- MultiXactOffsetControlLock, "pg_multixact/offsets");
+ MultiXactOffsetControlLock, "pg_multixact/offsets",
+ LWTRANCHE_MXACTOFFSET_BUFFERS);
SimpleLruInit(MultiXactMemberCtl,
"multixact_member", NUM_MXACTMEMBER_BUFFERS, 0,
- MultiXactMemberControlLock, "pg_multixact/members");
+ MultiXactMemberControlLock, "pg_multixact/members",
+ LWTRANCHE_MXACTMEMBER_BUFFERS);
/* Initialize our shared state struct */
MultiXactState = ShmemInitStruct("Shared MultiXact State",
void
SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
- LWLock *ctllock, const char *subdir)
+ LWLock *ctllock, const char *subdir, int tranche_id)
{
SlruShared shared;
bool found;
Assert(strlen(name) + 1 < SLRU_MAX_NAME_LENGTH);
strlcpy(shared->lwlock_tranche_name, name, SLRU_MAX_NAME_LENGTH);
- shared->lwlock_tranche_id = LWLockNewTrancheId();
+ shared->lwlock_tranche_id = tranche_id;
shared->lwlock_tranche.name = shared->lwlock_tranche_name;
shared->lwlock_tranche.array_base = shared->buffer_locks;
shared->lwlock_tranche.array_stride = sizeof(LWLockPadded);
{
SubTransCtl->PagePrecedes = SubTransPagePrecedes;
SimpleLruInit(SubTransCtl, "subtrans", NUM_SUBTRANS_BUFFERS, 0,
- SubtransControlLock, "pg_subtrans");
+ SubtransControlLock, "pg_subtrans",
+ LWTRANCHE_SUBTRANS_BUFFERS);
/* Override default assumption that writes should be fsync'd */
SubTransCtl->do_fsync = false;
}
*/
AsyncCtl->PagePrecedes = asyncQueuePagePrecedes;
SimpleLruInit(AsyncCtl, "async", NUM_ASYNC_BUFFERS, 0,
- AsyncCtlLock, "pg_notify");
+ AsyncCtlLock, "pg_notify", LWTRANCHE_ASYNC_BUFFERS);
/* Override default assumption that writes should be fsync'd */
AsyncCtl->do_fsync = false;
{
int i;
- replication_states_ctl->tranche_id = LWLockNewTrancheId();
+ replication_states_ctl->tranche_id = LWTRANCHE_REPLICATION_ORIGIN;
replication_states_ctl->tranche.name = "ReplicationOrigins";
replication_states_ctl->tranche.array_base =
&replication_states[0].lock;
*/
OldSerXidSlruCtl->PagePrecedes = OldSerXidPagePrecedesLogically;
SimpleLruInit(OldSerXidSlruCtl, "oldserxid",
- NUM_OLDSERXID_BUFFERS, 0, OldSerXidLock, "pg_serial");
+ NUM_OLDSERXID_BUFFERS, 0, OldSerXidLock, "pg_serial",
+ LWTRANCHE_OLDSERXID_BUFFERS);
/* Override default assumption that writes should be fsync'd */
OldSerXidSlruCtl->do_fsync = false;
extern Size SimpleLruShmemSize(int nslots, int nlsns);
extern void SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns,
- LWLock *ctllock, const char *subdir);
+ LWLock *ctllock, const char *subdir, int tranche_id);
extern int SimpleLruZeroPage(SlruCtl ctl, int pageno);
extern int SimpleLruReadPage(SlruCtl ctl, int pageno, bool write_ok,
TransactionId xid);
typedef enum BuiltinTrancheIds
{
LWTRANCHE_MAIN,
+ LWTRANCHE_CLOG_BUFFERS,
+ LWTRANCHE_COMMITTS_BUFFERS,
+ LWTRANCHE_SUBTRANS_BUFFERS,
+ LWTRANCHE_MXACTOFFSET_BUFFERS,
+ LWTRANCHE_MXACTMEMBER_BUFFERS,
+ LWTRANCHE_ASYNC_BUFFERS,
+ LWTRANCHE_OLDSERXID_BUFFERS,
LWTRANCHE_WAL_INSERT,
LWTRANCHE_BUFFER_CONTENT,
LWTRANCHE_BUFFER_IO_IN_PROGRESS,
+ LWTRANCHE_REPLICATION_ORIGIN,
LWTRANCHE_REPLICATION_SLOT_IO_IN_PROGRESS,
LWTRANCHE_PROC,
LWTRANCHE_FIRST_USER_DEFINED