From 5f96d3e615fc983b959e1d27db8017cde13ff169 Mon Sep 17 00:00:00 2001 From: jmcmullan Date: Mon, 22 Jul 2013 14:21:03 +0000 Subject: [PATCH] C:Avail - FLUSH should now handle systems with >2G of memory Signed-off-by: Jason S. McMullan git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@47750 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- arch/m68k-amiga/c/FlushMem.c | 28 ---------------------------- arch/m68k-amiga/c/mmakefile.src | 2 +- workbench/c/Avail.c | 20 +++++++++++++++----- 3 files changed, 16 insertions(+), 34 deletions(-) delete mode 100644 arch/m68k-amiga/c/FlushMem.c diff --git a/arch/m68k-amiga/c/FlushMem.c b/arch/m68k-amiga/c/FlushMem.c deleted file mode 100644 index 598962499d..0000000000 --- a/arch/m68k-amiga/c/FlushMem.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -#include - -#define BUG(x) do { const char *cp = x; while (*cp) { RawPutChar(*cp); cp++; } } while (0) - -void flushall(struct ExecBase *SysBase) -{ - APTR ptr; - ptr = AllocMem(0x7fffffff, MEMF_ANY); - if (ptr) { - flushall(SysBase); - FreeMem(ptr, 0x7fffffff); - } -} - -AROS_SH0H(FlushMem, 1.0, "Flush all expungable memory") -{ - AROS_SHCOMMAND_INIT - - BUG("---- FlushMem: Begin\n"); - flushall(SysBase); - BUG("---- FlushMem: End\n"); - return RETURN_OK; - - AROS_SHCOMMAND_EXIT -} diff --git a/arch/m68k-amiga/c/mmakefile.src b/arch/m68k-amiga/c/mmakefile.src index 774902ae6e..3bbad5aeec 100644 --- a/arch/m68k-amiga/c/mmakefile.src +++ b/arch/m68k-amiga/c/mmakefile.src @@ -43,7 +43,7 @@ FILES := gdbstub files=$(FILES) targetdir=$(AROS_C) \ detach=yes -FILES := gdbstop FlushMem +FILES := gdbstop %build_progs mmake=workbench-c-m68k-misc \ files=$(FILES) targetdir=$(AROS_C) \ diff --git a/workbench/c/Avail.c b/workbench/c/Avail.c index 924fa6c3d9..f2e4e98ea4 100644 --- a/workbench/c/Avail.c +++ b/workbench/c/Avail.c @@ -85,6 +85,20 @@ int __nocommandline = 1; BOOL aHuman; +/* Allocate all memory (even for >2G systems), then free it. + * This will force all expungable items out of memory + */ +static void FlushMem(struct ExecBase *SysBase) +{ + APTR Mem; + + Mem = AllocMem(0x7ffffff0, MEMF_PUBLIC); + if (Mem) { + FlushMem(SysBase); + FreeMem(Mem, 0x7ffffff0); + } +} + int main(void) { IPTR args[NOOFARGS] = { (IPTR)FALSE, @@ -133,11 +147,7 @@ int main(void) { if (aFlush) { - APTR Mem; - - Mem = AllocMem(0x7ffffff0, MEMF_PUBLIC); - if (Mem) - FreeMem(Mem, 0x7ffffff0); + FlushMem(SysBase); } if(aChip) -- 2.11.4.GIT