| /* |
| * rmgr.h |
| * |
| * Resource managers definition |
| * |
| * src/include/access/rmgr.h |
| */ |
| #ifndef RMGR_H |
| #define RMGR_H |
| |
| typedef uint8 RmgrId; |
| |
| /* |
| * Built-in resource managers |
| * |
| * The actual numerical values for each rmgr ID are defined by the order |
| * of entries in rmgrlist.h. |
| * |
| * Note: RM_MAX_ID must fit in RmgrId; widening that type will affect the XLOG |
| * file format. |
| */ |
| #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode) \ |
| symname, |
| |
| typedef enum RmgrIds |
| { |
| #include "access/rmgrlist.h" |
| RM_NEXT_ID |
| } RmgrIds; |
| |
| #undef PG_RMGR |
| |
| #define RM_MAX_ID UINT8_MAX |
| #define RM_MAX_BUILTIN_ID (RM_NEXT_ID - 1) |
| #define RM_MIN_CUSTOM_ID 128 |
| #define RM_MAX_CUSTOM_ID UINT8_MAX |
| #define RM_N_IDS (UINT8_MAX + 1) |
| #define RM_N_BUILTIN_IDS (RM_MAX_BUILTIN_ID + 1) |
| #define RM_N_CUSTOM_IDS (RM_MAX_CUSTOM_ID - RM_MIN_CUSTOM_ID + 1) |
| |
| static inline bool |
| RmgrIdIsBuiltin(int rmid) |
| { |
| return rmid <= RM_MAX_BUILTIN_ID; |
| } |
| |
| static inline bool |
| RmgrIdIsCustom(int rmid) |
| { |
| return rmid >= RM_MIN_CUSTOM_ID && rmid <= RM_MAX_CUSTOM_ID; |
| } |
| |
| #define RmgrIdIsValid(rmid) (RmgrIdIsBuiltin((rmid)) || RmgrIdIsCustom((rmid))) |
| |
| /* |
| * RmgrId to use for extensions that require an RmgrId, but are still in |
| * development and have not reserved their own unique RmgrId yet. See: |
| * https://wiki.postgresql.org/wiki/CustomWALResourceManagers |
| */ |
| #define RM_EXPERIMENTAL_ID 128 |
| |
| #endif /* RMGR_H */ |