diff options
| author | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-09 14:52:54 +0000 |
|---|---|---|
| committer | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-09 14:52:54 +0000 |
| commit | d7d135227396a5b3cede974e94c25032a1bc69d2 (patch) | |
| tree | dd9f58193183139cb6f104fb6b01bdaf503e1828 /src/libs/zbxsysinfo/linux/memory.c | |
| parent | b49e076608f062db84ef895f2541d03f907dc02a (diff) | |
| download | zabbix-d7d135227396a5b3cede974e94c25032a1bc69d2.tar.gz zabbix-d7d135227396a5b3cede974e94c25032a1bc69d2.tar.xz zabbix-d7d135227396a5b3cede974e94c25032a1bc69d2.zip | |
- [ZBX-149] fixed incorrect processing of vm.memory.size key in FreeBSD
- [ZBX-109] added support of vm.memory.size[pfree] Linux, FreeBSD & Win agents
[svn merge -r4992:4994 svn://svn.zabbix.com/branches/1.4]
git-svn-id: svn://svn.zabbix.com/trunk@4995 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxsysinfo/linux/memory.c')
| -rw-r--r-- | src/libs/zbxsysinfo/linux/memory.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libs/zbxsysinfo/linux/memory.c b/src/libs/zbxsysinfo/linux/memory.c index a6a03531..cac0d1a3 100644 --- a/src/libs/zbxsysinfo/linux/memory.c +++ b/src/libs/zbxsysinfo/linux/memory.c @@ -151,6 +151,41 @@ static int VM_MEMORY_FREE(const char *cmd, const char *param, unsigned flags, AG } } +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(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { #define MEM_FNCLIST struct mem_fnclist_s @@ -163,6 +198,7 @@ MEM_FNCLIST MEM_FNCLIST fl[] = { {"free", VM_MEMORY_FREE}, + {"pfree", VM_MEMORY_PFREE}, {"shared", VM_MEMORY_SHARED}, {"total", VM_MEMORY_TOTAL}, {"buffers", VM_MEMORY_BUFFERS}, |
