From 98347b5a3ab116dd0892d112531e376cff5066fd Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 5 Jul 2024 11:21:46 +0300 Subject: [PATCH] Lift limitation that PGPROC->links must be the first field Since commit 5764f611e1, we've been using the ilist.h functions for handling the linked list. There's no need for 'links' to be the first element of the struct anymore, except for one call in InitProcess where we used a straight cast from the 'dlist_node *' to PGPROC *, without the dlist_container() macro. That was just an oversight in commit 5764f611e1, fix it. There no imminent need to move 'links' from being the first field, but let's be tidy. Reviewed-by: Aleksander Alekseev, Andres Freund Discussion: https://www.postgresql.org/message-id/22aa749e-cc1a-424a-b455-21325473a794@iki.fi --- src/backend/storage/lmgr/proc.c | 2 +- src/include/storage/proc.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index ce29da90121..1b23efb26f3 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -330,7 +330,7 @@ InitProcess(void) if (!dlist_is_empty(procgloballist)) { - MyProc = (PGPROC *) dlist_pop_head_node(procgloballist); + MyProc = dlist_container(PGPROC, links, dlist_pop_head_node(procgloballist)); SpinLockRelease(ProcStructLock); } else diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 9488bf1857c..7d3fc2bfa60 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -161,7 +161,6 @@ typedef enum */ struct PGPROC { - /* proc->links MUST BE FIRST IN STRUCT (see ProcSleep,ProcWakeup,etc) */ dlist_node links; /* list link if process is in a list */ dlist_head *procgloballist; /* procglobal list that owns this PGPROC */ -- 2.39.5