From faf01c03769e0d67c6be86b44dd86d80bce413f7 Mon Sep 17 00:00:00 2001 From: Jim Monte Date: Sat, 21 Dec 2019 21:09:30 -0500 Subject: [PATCH] Modified calculation to determine when memory is nearly exhausted. Also changed prototypes of memory reporting functions to match their definitions. --- src/frontend/resource.c | 28 ++++++++++++++-------------- src/frontend/resource.h | 8 ++++---- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/frontend/resource.c b/src/frontend/resource.c index 7952e6963..608b7ee44 100644 --- a/src/frontend/resource.c +++ b/src/frontend/resource.c @@ -123,33 +123,33 @@ com_rusage(wordlist *wl) /* Find out if the user is approaching his maximum data size. If usage is withing 95% of total available then a warning message is sent to the error stream (cp_err) */ -void -ft_ckspace(void) +void ft_ckspace(void) { #ifdef SHARED_MODULE /* False warning on some OSs, especially on Linux when loaded during runtime. The caller then has to take care of memory available */ return; #else - unsigned long long freemem, totalmem, usage, avail; - freemem = getAvailableMemorySize(); - totalmem = getMemorySize(); - usage = getCurrentRSS(); - avail = usage + freemem; + const unsigned long long freemem = getAvailableMemorySize(); + const unsigned long long usage = getCurrentRSS(); - if (totalmem == 0 || freemem == 0 || usage == 0) + if (freemem == 0 || usage == 0) { /* error obtaining data */ return; + } - if ((double)freemem < (double)totalmem * 0.05) { - fprintf(cp_err, "Warning - approaching max data size: "); - fprintf(cp_err, "current size = "); + const unsigned long long avail = usage + freemem; + if ((double) usage > (double) avail * 0.95) { + (void) fprintf(cp_err, + "Warning - approaching max data size: " + "current size = "); fprintmem(cp_err, usage); - fprintf(cp_err, ", limit = "); + (void) fprintf(cp_err, ", limit = "); fprintmem(cp_err, avail); - fprintf(cp_err, "\n"); + (void) fprintf(cp_err, "\n"); } #endif -} +} /* end of function ft_chkspace */ + /* Print out one piece of resource usage information. */ diff --git a/src/frontend/resource.h b/src/frontend/resource.h index 21cad8912..15b99c399 100644 --- a/src/frontend/resource.h +++ b/src/frontend/resource.h @@ -6,10 +6,10 @@ #ifndef ngspice_RESOURCE_H #define ngspice_RESOURCE_H -extern size_t getMemorySize(void); -extern size_t getPeakRSS(void); -extern size_t getCurrentRSS(void); -extern size_t getAvailableMemorySize(void); +extern unsigned long long getMemorySize(void); +extern unsigned long long getPeakRSS(void); +extern unsigned long long getCurrentRSS(void); +extern unsigned long long getAvailableMemorySize(void); void init_rlimits(void); void init_time(void);