| #ifndef MODPERL_GTOP_H |
| #define MODPERL_GTOP_H |
| |
| #ifndef MP_TRACE |
| # undef MP_USE_GTOP |
| #endif |
| |
| #ifdef MP_USE_GTOP |
| |
| #include <glibtop.h> |
| #include <glibtop/open.h> |
| #include <glibtop/close.h> |
| #include <glibtop/xmalloc.h> |
| #include <glibtop/parameter.h> |
| #include <glibtop/union.h> |
| #include <glibtop/sysdeps.h> |
| |
| #define MP_GTOP_SSS 16 |
| |
| typedef struct { |
| char size[MP_GTOP_SSS]; |
| char vsize[MP_GTOP_SSS]; |
| char resident[MP_GTOP_SSS]; |
| char share[MP_GTOP_SSS]; |
| char rss[MP_GTOP_SSS]; |
| } modperl_gtop_proc_mem_ss; |
| |
| typedef struct { |
| glibtop_union before; |
| glibtop_union after; |
| pid_t pid; |
| modperl_gtop_proc_mem_ss proc_mem_ss; |
| } modperl_gtop_t; |
| |
| modperl_gtop_t *modperl_gtop_new(apr_pool_t *p); |
| void modperl_gtop_get_proc_mem_before(modperl_gtop_t *gtop); |
| void modperl_gtop_get_proc_mem_after(modperl_gtop_t *gtop); |
| void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop, |
| char *when, const char *func, char *msg); |
| void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char* func, char *msg); |
| void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char* func, char *msg); |
| void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char* func, char *msg); |
| |
| #define modperl_gtop_do_proc_mem_before(func, msg) \ |
| modperl_gtop_get_proc_mem_before(scfg->gtop); \ |
| modperl_gtop_report_proc_mem_before(scfg->gtop, func, msg) |
| |
| #define modperl_gtop_do_proc_mem_after(func, msg) \ |
| modperl_gtop_get_proc_mem_after(scfg->gtop); \ |
| modperl_gtop_report_proc_mem_after(scfg->gtop, func, msg); \ |
| modperl_gtop_report_proc_mem_diff(scfg->gtop, func, msg) |
| |
| #endif /* MP_USE_GTOP */ |
| |
| #endif /* MODPERL_GTOP_H */ |