diff options
author | Andres Freund <andres@anarazel.de> | 2025-01-10 11:08:17 -0500 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2025-01-10 11:43:00 -0500 |
commit | 7e957cbb50aa425ef10a2fd0903595ae9e256d5f (patch) | |
tree | 34a2b63f90f4480b3e49f6cf62084d161ed14d74 /src | |
parent | 40d4031abd0da3d84543b050e1ced2da775a3274 (diff) | |
download | postgresql-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.c | 21 |
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); |