aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2025-01-10 11:08:17 -0500
committerAndres Freund <andres@anarazel.de>2025-01-10 11:43:00 -0500
commit7e957cbb50aa425ef10a2fd0903595ae9e256d5f (patch)
tree34a2b63f90f4480b3e49f6cf62084d161ed14d74 /src
parent40d4031abd0da3d84543b050e1ced2da775a3274 (diff)
downloadpostgresql-7e957cbb50aa425ef10a2fd0903595ae9e256d5f.tar.gz
postgresql-7e957cbb50aa425ef10a2fd0903595ae9e256d5f.zip
postmaster: Introduce variadic btmask_all_except()
Upcoming patches would otherwise need btmask_all_except3(). Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi> Discussion: https://postgr.es/m/w3z6w3g4aovivs735nk4pzjhmegntecesm3kktpebchegm5o53@aonnq2kn27xi
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/postmaster.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index c65288f5c15..6da4cfe6082 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -164,23 +164,20 @@ btmask_del(BackendTypeMask mask, BackendType t)
}
static inline BackendTypeMask
-btmask_all_except(BackendType t)
+btmask_all_except_n(int nargs, BackendType *t)
{
BackendTypeMask mask = BTYPE_MASK_ALL;
- mask = btmask_del(mask, t);
+ for (int i = 0; i < nargs; i++)
+ mask = btmask_del(mask, t[i]);
return mask;
}
-static inline BackendTypeMask
-btmask_all_except2(BackendType t1, BackendType t2)
-{
- BackendTypeMask mask = BTYPE_MASK_ALL;
-
- mask = btmask_del(mask, t1);
- mask = btmask_del(mask, t2);
- return mask;
-}
+#define btmask_all_except(...) \
+ btmask_all_except_n( \
+ lengthof(((BackendType[]){__VA_ARGS__})), \
+ (BackendType[]){__VA_ARGS__} \
+ )
static inline bool
btmask_contains(BackendTypeMask mask, BackendType t)
@@ -2979,7 +2976,7 @@ PostmasterStateMachine(void)
* left by now anyway; what we're really waiting for is walsenders and
* archiver.
*/
- if (CountChildren(btmask_all_except2(B_LOGGER, B_DEAD_END_BACKEND)) == 0)
+ if (CountChildren(btmask_all_except(B_LOGGER, B_DEAD_END_BACKEND)) == 0)
{
UpdatePMState(PM_WAIT_DEAD_END);
ConfigurePostmasterWaitSet(false);