mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 04:41:23 +00:00
Merge branch 'linux-better-mem-report' into 'master'
Use MemAvailable instead See merge request STJr/SRB2!281
This commit is contained in:
commit
a605ee9c11
1 changed files with 73 additions and 30 deletions
|
@ -124,6 +124,10 @@ typedef LPVOID (WINAPI *p_MapViewOfFile) (HANDLE, DWORD, DWORD, DWORD, SIZE_T);
|
||||||
#include "macosx/mac_resources.h"
|
#include "macosx/mac_resources.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef errno
|
||||||
|
#include <errno.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// Locations for searching the srb2.srb
|
// Locations for searching the srb2.srb
|
||||||
#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
|
#if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
|
||||||
#define DEFAULTWADLOCATION1 "/usr/local/share/games/SRB2"
|
#define DEFAULTWADLOCATION1 "/usr/local/share/games/SRB2"
|
||||||
|
@ -2091,7 +2095,6 @@ INT32 I_StartupSystem(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// I_Quit
|
// I_Quit
|
||||||
//
|
//
|
||||||
|
@ -2712,7 +2715,30 @@ const char *I_LocateWad(void)
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#define MEMINFO_FILE "/proc/meminfo"
|
#define MEMINFO_FILE "/proc/meminfo"
|
||||||
#define MEMTOTAL "MemTotal:"
|
#define MEMTOTAL "MemTotal:"
|
||||||
|
#define MEMAVAILABLE "MemAvailable:"
|
||||||
#define MEMFREE "MemFree:"
|
#define MEMFREE "MemFree:"
|
||||||
|
#define CACHED "Cached:"
|
||||||
|
#define BUFFERS "Buffers:"
|
||||||
|
#define SHMEM "Shmem:"
|
||||||
|
|
||||||
|
/* Parse the contents of /proc/meminfo (in buf), return value of "name"
|
||||||
|
* (example: MemTotal) */
|
||||||
|
static long get_entry(const char* name, const char* buf)
|
||||||
|
{
|
||||||
|
long val;
|
||||||
|
char* hit = strstr(buf, name);
|
||||||
|
if (hit == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
|
val = strtol(hit + strlen(name), NULL, 10);
|
||||||
|
if (errno != 0) {
|
||||||
|
CONS_Alert(CONS_ERROR, M_GetText("get_entry: strtol() failed: %s\n"), strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// quick fix for compil
|
// quick fix for compil
|
||||||
|
@ -2784,6 +2810,11 @@ UINT32 I_GetFreeMem(UINT32 *total)
|
||||||
UINT32 totalKBytes;
|
UINT32 totalKBytes;
|
||||||
INT32 n;
|
INT32 n;
|
||||||
INT32 meminfo_fd = -1;
|
INT32 meminfo_fd = -1;
|
||||||
|
long Cached;
|
||||||
|
long MemFree;
|
||||||
|
long Buffers;
|
||||||
|
long Shmem;
|
||||||
|
long MemAvailable = -1;
|
||||||
|
|
||||||
meminfo_fd = open(MEMINFO_FILE, O_RDONLY);
|
meminfo_fd = open(MEMINFO_FILE, O_RDONLY);
|
||||||
n = read(meminfo_fd, buf, 1023);
|
n = read(meminfo_fd, buf, 1023);
|
||||||
|
@ -2809,16 +2840,28 @@ UINT32 I_GetFreeMem(UINT32 *total)
|
||||||
memTag += sizeof (MEMTOTAL);
|
memTag += sizeof (MEMTOTAL);
|
||||||
totalKBytes = atoi(memTag);
|
totalKBytes = atoi(memTag);
|
||||||
|
|
||||||
if ((memTag = strstr(buf, MEMFREE)) == NULL)
|
if ((memTag = strstr(buf, MEMAVAILABLE)) == NULL)
|
||||||
|
{
|
||||||
|
Cached = get_entry(CACHED, buf);
|
||||||
|
MemFree = get_entry(MEMFREE, buf);
|
||||||
|
Buffers = get_entry(BUFFERS, buf);
|
||||||
|
Shmem = get_entry(SHMEM, buf);
|
||||||
|
MemAvailable = Cached + MemFree + Buffers - Shmem;
|
||||||
|
|
||||||
|
if (MemAvailable == -1)
|
||||||
{
|
{
|
||||||
// Error
|
// Error
|
||||||
if (total)
|
if (total)
|
||||||
*total = 0L;
|
*total = 0L;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
freeKBytes = MemAvailable;
|
||||||
memTag += sizeof (MEMFREE);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memTag += sizeof (MEMAVAILABLE);
|
||||||
freeKBytes = atoi(memTag);
|
freeKBytes = atoi(memTag);
|
||||||
|
}
|
||||||
|
|
||||||
if (total)
|
if (total)
|
||||||
*total = totalKBytes << 10;
|
*total = totalKBytes << 10;
|
||||||
|
|
Loading…
Reference in a new issue