Line data Source code
1 : /*
2 : * rmgr.h
3 : *
4 : * Resource managers definition
5 : *
6 : * src/include/access/rmgr.h
7 : */
8 : #ifndef RMGR_H
9 : #define RMGR_H
10 :
11 : typedef uint8 RmgrId;
12 :
13 : /*
14 : * Built-in resource managers
15 : *
16 : * The actual numerical values for each rmgr ID are defined by the order
17 : * of entries in rmgrlist.h.
18 : *
19 : * Note: RM_MAX_ID must fit in RmgrId; widening that type will affect the XLOG
20 : * file format.
21 : */
22 : #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode) \
23 : symname,
24 :
25 : typedef enum RmgrIds
26 : {
27 : #include "access/rmgrlist.h"
28 : RM_NEXT_ID
29 : } RmgrIds;
30 :
31 : #undef PG_RMGR
32 :
33 : #define RM_MAX_ID UINT8_MAX
34 : #define RM_MAX_BUILTIN_ID (RM_NEXT_ID - 1)
35 : #define RM_MIN_CUSTOM_ID 128
36 : #define RM_MAX_CUSTOM_ID UINT8_MAX
37 : #define RM_N_IDS (UINT8_MAX + 1)
38 : #define RM_N_BUILTIN_IDS (RM_MAX_BUILTIN_ID + 1)
39 : #define RM_N_CUSTOM_IDS (RM_MAX_CUSTOM_ID - RM_MIN_CUSTOM_ID + 1)
40 :
41 : static inline bool
42 5764111 : RmgrIdIsBuiltin(int rmid)
43 : {
44 5764111 : return rmid <= RM_MAX_BUILTIN_ID;
45 : }
46 :
47 : static inline bool
48 2492 : RmgrIdIsCustom(int rmid)
49 : {
50 2492 : return rmid >= RM_MIN_CUSTOM_ID && rmid <= RM_MAX_CUSTOM_ID;
51 : }
52 :
53 : #define RmgrIdIsValid(rmid) (RmgrIdIsBuiltin((rmid)) || RmgrIdIsCustom((rmid)))
54 :
55 : /*
56 : * RmgrId to use for extensions that require an RmgrId, but are still in
57 : * development and have not reserved their own unique RmgrId yet. See:
58 : * https://wiki.postgresql.org/wiki/CustomWALResourceManagers
59 : */
60 : #define RM_EXPERIMENTAL_ID 128
61 :
62 : #endif /* RMGR_H */
|