#define CHECKED_SYSCONF_SYSCALL(sysconf_name) \
if (-1 == (res##sysconf_name = sysconf(sysconf_name))) \
SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Cannot get sysconf(" #sysconf_name "), errno: %s", \
ret = SYSINFO_RET_FAIL; \
#ifdef HAVE_VMINFO_T_UPDATES
static int VM_MEMORY_TOTAL(AGENT_RESULT *result)
long res_SC_PHYS_PAGES, res_SC_PAGESIZE;
zabbix_log(LOG_LEVEL_DEBUG, "In %s", __func__);
CHECKED_SYSCONF_SYSCALL(_SC_PHYS_PAGES);
CHECKED_SYSCONF_SYSCALL(_SC_PAGESIZE);
SET_UI64_RESULT(result, (zbx_uint64_t)res_SC_PHYS_PAGES * res_SC_PAGESIZE);
zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
#ifndef HAVE_VMINFO_T_UPDATES
static int VM_MEMORY_USED(AGENT_RESULT *result)
long res_SC_PHYS_PAGES, res_SC_AVPHYS_PAGES, res_SC_PAGESIZE;
zabbix_log(LOG_LEVEL_DEBUG, "In %s, (no HAVE_VMINFO_T_UPDATES)", __func__);
CHECKED_SYSCONF_SYSCALL(_SC_PHYS_PAGES);
CHECKED_SYSCONF_SYSCALL(_SC_AVPHYS_PAGES);
CHECKED_SYSCONF_SYSCALL(_SC_PAGESIZE);
used = res_SC_PHYS_PAGES - res_SC_AVPHYS_PAGES;
SET_UI64_RESULT(result, used * res_SC_PAGESIZE);
zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
static int VM_MEMORY_PUSED(AGENT_RESULT *result)
zbx_uint64_t used, total;
long res_SC_PHYS_PAGES, res_SC_AVPHYS_PAGES;
zabbix_log(LOG_LEVEL_DEBUG, "In %s, (no HAVE_VMINFO_T_UPDATES)", __func__);
CHECKED_SYSCONF_SYSCALL(_SC_PHYS_PAGES);
CHECKED_SYSCONF_SYSCALL(_SC_AVPHYS_PAGES);
if (0 == (total = res_SC_PHYS_PAGES))
SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot calculate percentage because total is zero."));