Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e84712c

Browse files
committed
postmaster: Make btmask_add() variadic
Suggested-by: Heikki Linnakangas <hlinnaka@iki.fi> Discussion: https://postgr.es/m/d2cd8fd3-396a-4390-8f0b-74be65e72899@iki.fi
1 parent 7e957cb commit e84712c

File tree

1 file changed

+34
-20
lines changed

1 file changed

+34
-20
lines changed

src/backend/postmaster/postmaster.c

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,19 @@ btmask(BackendType t)
150150
}
151151

152152
static inline BackendTypeMask
153-
btmask_add(BackendTypeMask mask, BackendType t)
153+
btmask_add_n(BackendTypeMask mask, int nargs, BackendType *t)
154154
{
155-
mask.mask |= 1 << t;
155+
for (int i = 0; i < nargs; i++)
156+
mask.mask |= 1 << t[i];
156157
return mask;
157158
}
158159

160+
#define btmask_add(mask, ...) \
161+
btmask_add_n(mask, \
162+
lengthof(((BackendType[]){__VA_ARGS__})), \
163+
(BackendType[]){__VA_ARGS__} \
164+
)
165+
159166
static inline BackendTypeMask
160167
btmask_del(BackendTypeMask mask, BackendType t)
161168
{
@@ -2840,22 +2847,27 @@ PostmasterStateMachine(void)
28402847
/*
28412848
* PM_WAIT_BACKENDS state ends when we have no regular backends, no
28422849
* autovac launcher or workers, and no bgworkers (including
2843-
* unconnected ones). No walwriter, bgwriter, slot sync worker, or
2844-
* WAL summarizer either.
2850+
* unconnected ones).
28452851
*/
2846-
targetMask = btmask_add(targetMask, B_BACKEND);
2847-
targetMask = btmask_add(targetMask, B_AUTOVAC_LAUNCHER);
2848-
targetMask = btmask_add(targetMask, B_AUTOVAC_WORKER);
2849-
targetMask = btmask_add(targetMask, B_BG_WORKER);
2852+
targetMask = btmask_add(targetMask,
2853+
B_BACKEND,
2854+
B_AUTOVAC_LAUNCHER,
2855+
B_AUTOVAC_WORKER,
2856+
B_BG_WORKER);
28502857

2851-
targetMask = btmask_add(targetMask, B_WAL_WRITER);
2852-
targetMask = btmask_add(targetMask, B_BG_WRITER);
2853-
targetMask = btmask_add(targetMask, B_SLOTSYNC_WORKER);
2854-
targetMask = btmask_add(targetMask, B_WAL_SUMMARIZER);
2858+
/*
2859+
* No walwriter, bgwriter, slot sync worker, or WAL summarizer either.
2860+
*/
2861+
targetMask = btmask_add(targetMask,
2862+
B_WAL_WRITER,
2863+
B_BG_WRITER,
2864+
B_SLOTSYNC_WORKER,
2865+
B_WAL_SUMMARIZER);
28552866

28562867
/* If we're in recovery, also stop startup and walreceiver procs */
2857-
targetMask = btmask_add(targetMask, B_STARTUP);
2858-
targetMask = btmask_add(targetMask, B_WAL_RECEIVER);
2868+
targetMask = btmask_add(targetMask,
2869+
B_STARTUP,
2870+
B_WAL_RECEIVER);
28592871

28602872
/*
28612873
* If we are doing crash recovery or an immediate shutdown then we
@@ -2878,17 +2890,19 @@ PostmasterStateMachine(void)
28782890
{
28792891
BackendTypeMask remainMask = BTYPE_MASK_NONE;
28802892

2881-
remainMask = btmask_add(remainMask, B_WAL_SENDER);
2882-
remainMask = btmask_add(remainMask, B_ARCHIVER);
2883-
remainMask = btmask_add(remainMask, B_DEAD_END_BACKEND);
2884-
remainMask = btmask_add(remainMask, B_LOGGER);
2893+
remainMask = btmask_add(remainMask,
2894+
B_WAL_SENDER,
2895+
B_ARCHIVER,
2896+
B_DEAD_END_BACKEND,
2897+
B_LOGGER);
28852898

28862899
/* checkpointer may or may not be in targetMask already */
28872900
remainMask = btmask_add(remainMask, B_CHECKPOINTER);
28882901

28892902
/* these are not real postmaster children */
2890-
remainMask = btmask_add(remainMask, B_INVALID);
2891-
remainMask = btmask_add(remainMask, B_STANDALONE_BACKEND);
2903+
remainMask = btmask_add(remainMask,
2904+
B_INVALID,
2905+
B_STANDALONE_BACKEND);
28922906

28932907
/* All types should be included in targetMask or remainMask */
28942908
Assert((remainMask.mask | targetMask.mask) == BTYPE_MASK_ALL.mask);

0 commit comments

Comments
 (0)