static int VM_MEMORY_AVAILABLE(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { AGENT_RESULT result_tmp; zbx_uint64_t sum = 0; assert(result); init_result(result); init_result(&result_tmp); if(VM_MEMORY_FREE(cmd, param, flags, &result_tmp) != SYSINFO_RET_OK || !(result_tmp.type & AR_UINT64)) return SYSINFO_RET_FAIL; sum += result_tmp.ui64; if(VM_MEMORY_BUFFERS(cmd, param, flags, &result_tmp) != SYSINFO_RET_OK || !(result_tmp.type & AR_UINT64)) return SYSINFO_RET_FAIL; sum += result_tmp.ui64; if(VM_MEMORY_CACHED(cmd, param, flags, &result_tmp) != SYSINFO_RET_OK || !(result_tmp.type & AR_UINT64)) return SYSINFO_RET_FAIL; sum += result_tmp.ui64; free_result(&result_tmp); SET_UI64_RESULT(result, sum); return SYSINFO_RET_OK; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { int ret = SYSINFO_RET_FAIL; #ifdef HAVE_SYS_PSTAT_H char *mode; if (1 < request->nparam) return SYSINFO_RET_FAIL; mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "active")) ret = VM_MEMORY_ACTIVE(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else ret = SYSINFO_RET_FAIL; #endif return ret; }
static int VM_MEMORY_PFREE(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { AGENT_RESULT result_tmp; zbx_uint64_t tot_val = 0; zbx_uint64_t free_val = 0; assert(result); init_result(result); init_result(&result_tmp); if(VM_MEMORY_TOTAL(cmd, param, flags, &result_tmp) != SYSINFO_RET_OK || !(result_tmp.type & AR_UINT64)) return SYSINFO_RET_FAIL; tot_val = result_tmp.ui64; /* Check fot division by zero */ if(tot_val == 0) { free_result(&result_tmp); return SYSINFO_RET_FAIL; } if(VM_MEMORY_FREE(cmd, param, flags, &result_tmp) != SYSINFO_RET_OK || !(result_tmp.type & AR_UINT64)) return SYSINFO_RET_FAIL; free_val = result_tmp.ui64; free_result(&result_tmp); SET_DBL_RESULT(result, (100.0 * (double)free_val) / (double)tot_val); return SYSINFO_RET_OK; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { char *mode; int ret; if (1 < request->nparam) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return SYSINFO_RET_FAIL; } mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid first parameter.")); return SYSINFO_RET_FAIL; } return ret; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { char *mode; int ret; if (1 < request->nparam) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return SYSINFO_RET_FAIL; } if (0 == pagesize) { size_t len; ZBX_SYSCTLBYNAME("vm.stats.vm.v_page_size", pagesize); } mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "active")) ret = VM_MEMORY_ACTIVE(result); else if (0 == strcmp(mode, "inactive")) ret = VM_MEMORY_INACTIVE(result); else if (0 == strcmp(mode, "wired")) ret = VM_MEMORY_WIRED(result); else if (0 == strcmp(mode, "cached")) ret = VM_MEMORY_CACHED(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else if (0 == strcmp(mode, "buffers")) ret = VM_MEMORY_BUFFERS(result); else if (0 == strcmp(mode, "shared")) ret = VM_MEMORY_SHARED(result); else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid first parameter.")); ret = SYSINFO_RET_FAIL; } return ret; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { char *mode; int ret = SYSINFO_RET_FAIL; if (1 < request->nparam) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return SYSINFO_RET_FAIL; } if (0 == pagesize) { if (KERN_SUCCESS != host_page_size(mach_host_self(), &pagesize)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot obtain host page size.")); return SYSINFO_RET_FAIL; } } mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "active")) ret = VM_MEMORY_ACTIVE(result); else if (0 == strcmp(mode, "inactive")) ret = VM_MEMORY_INACTIVE(result); else if (0 == strcmp(mode, "wired")) ret = VM_MEMORY_WIRED(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid first parameter.")); return SYSINFO_RET_FAIL; } return ret; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { char *mode; int ret; if (1 < request->nparam) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return SYSINFO_RET_FAIL; } mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "buffers")) ret = VM_MEMORY_BUFFERS(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else if (0 == strcmp(mode, "shared")) ret = VM_MEMORY_SHARED(result); else if (0 == strcmp(mode, "cached")) ret = VM_MEMORY_PROC_MEMINFO("Cached:", result); else if (0 == strcmp(mode, "active")) ret = VM_MEMORY_PROC_MEMINFO("Active:", result); else if (0 == strcmp(mode, "anon")) ret = VM_MEMORY_PROC_MEMINFO("AnonPages:", result); else if (0 == strcmp(mode, "inactive")) ret = VM_MEMORY_PROC_MEMINFO("Inactive:", result); else if (0 == strcmp(mode, "slab")) ret = VM_MEMORY_PROC_MEMINFO("Slab:", result); else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid first parameter.")); ret = SYSINFO_RET_FAIL; } return ret; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { char *mode; int ret = SYSINFO_RET_FAIL; if (1 < request->nparam) return SYSINFO_RET_FAIL; mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "active")) ret = VM_MEMORY_ACTIVE(result); else if (0 == strcmp(mode, "inactive")) ret = VM_MEMORY_INACTIVE(result); else if (0 == strcmp(mode, "wired")) ret = VM_MEMORY_WIRED(result); else if (0 == strcmp(mode, "anon")) ret = VM_MEMORY_ANON(result); else if (0 == strcmp(mode, "exec")) ret = VM_MEMORY_EXEC(result); else if (0 == strcmp(mode, "file")) ret = VM_MEMORY_FILE(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else if (0 == strcmp(mode, "buffers")) ret = VM_MEMORY_BUFFERS(result); else if (0 == strcmp(mode, "cached")) ret = VM_MEMORY_CACHED(result); else if (0 == strcmp(mode, "shared")) ret = VM_MEMORY_SHARED(result); else ret = SYSINFO_RET_FAIL; return ret; }
int VM_MEMORY_SIZE(AGENT_REQUEST *request, AGENT_RESULT *result) { #ifdef HAVE_LIBPERFSTAT int ret; char *mode; if (1 < request->nparam) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return SYSINFO_RET_FAIL; } mode = get_rparam(request, 0); if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total")) ret = VM_MEMORY_TOTAL(result); else if (0 == strcmp(mode, "pinned")) ret = VM_MEMORY_PINNED(result); else if (0 == strcmp(mode, "free")) ret = VM_MEMORY_FREE(result); else if (0 == strcmp(mode, "used")) ret = VM_MEMORY_USED(result); else if (0 == strcmp(mode, "pused")) ret = VM_MEMORY_PUSED(result); else if (0 == strcmp(mode, "available")) ret = VM_MEMORY_AVAILABLE(result); else if (0 == strcmp(mode, "pavailable")) ret = VM_MEMORY_PAVAILABLE(result); else if (0 == strcmp(mode, "cached")) ret = VM_MEMORY_CACHED(result); else { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid first parameter.")); return SYSINFO_RET_FAIL; } return ret; #else SET_MSG_RESULT(result, zbx_strdup(NULL, "Agent was compiled without support for Perfstat API.")); return SYSINFO_RET_FAIL; #endif }