Thanks for working on this. I was just trying to find something like "pg_stat_checkpointer".
You wrote beentry++ at the start of two loops, but I think that's wrong; it should be at the end, as in the rest of the file (or as a loop increment). BackendStatusArray[0] is actually used (even though its backend has backendId==1, not 0). "MyBEEntry = &BackendStatusArray[MyBackendId - 1];" You could put *_NUM_TYPES as the last value in these enums, like NUM_AUXPROCTYPES, NUM_PMSIGNALS, and NUM_PROCSIGNALS: +#define IOOP_NUM_TYPES (IOOP_WRITE + 1) +#define IOPATH_NUM_TYPES (IOPATH_STRATEGY + 1) +#define BACKEND_NUM_TYPES (B_LOGGER + 1) There's extraneous blank lines in these functions: +pgstat_sum_io_path_ops +pgstat_report_live_backend_io_path_ops +pgstat_recv_resetsharedcounter +GetIOPathDesc +StrategyRejectBuffer This function is doubly-indented: +pgstat_send_buffers_reset As support for C99 is now required by postgres, variables can be declared as part of various loops. + int io_path; + for (io_path = 0; io_path < IOPATH_NUM_TYPES; io_path++) Rather than memset(), you could initialize msg like this. PgStat_MsgIOPathOps msg = {0}; +pgstat_send_buffers(void) +{ + PgStat_MsgIOPathOps msg; + + PgBackendStatus *beentry = MyBEEntry; + + if (!beentry) + return; + + memset(&msg, 0, sizeof(msg)); -- Justin