--- zabbix-1.6.6/src/libs/zbxsysinfo/linux/memory.c 2009-08-26 15:16:24.000000000 +0200 +++ zabbix-1.6.6/src/libs/zbxsysinfo/linux/memory.c.orig 2009-12-07 13:45:30.000000000 +0200 @@ -151,6 +151,34 @@ } } +static int VM_MEMORY_USED(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; + + 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, (double)tot_val - (double)free_val); + + return SYSINFO_RET_OK; +} + static int VM_MEMORY_PFREE(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { AGENT_RESULT result_tmp; @@ -236,6 +264,7 @@ {"buffers", VM_MEMORY_BUFFERS}, {"cached", VM_MEMORY_CACHED}, {"available", VM_MEMORY_AVAILABLE}, + {"used", VM_MEMORY_USED}, {0, 0} }; char mode[MAX_STRING_LEN];