integrated realtimegc stuff into testament

This commit is contained in:
Simon Hafner 2015-04-13 22:36:35 -05:00
commit c55f884b5c
7 changed files with 78 additions and 38 deletions

View file

@ -21,24 +21,24 @@ int main(int argc, char* argv[])
void* hndl;
pFunc status;
pFunc count;
pFunc occupiedMem;
pFunc checkOccupiedMem;
#ifdef WIN
hndl = (void*) LoadLibrary((char const*)"./shared.dll");
hndl = (void*) LoadLibrary((char const*)"./tests/realtimeGC/shared.dll");
status = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"status");
count = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"count");
occupiedMem = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"occupiedMem");
checkOccupiedMem = (pFunc)GetProcAddress((HMODULE) hndl, (char const*)"checkOccupiedMem");
#else /* OSX || NIX */
hndl = (void*) dlopen((char const*)"./libshared.so", RTLD_LAZY);
hndl = (void*) dlopen((char const*)"./tests/realtimeGC/libshared.so", RTLD_LAZY);
status = (pFunc) dlsym(hndl, (char const*)"status");
count = (pFunc) dlsym(hndl, (char const*)"count");
occupiedMem = (pFunc) dlsym(hndl, (char const*)"occupiedMem");
checkOccupiedMem = (pFunc) dlsym(hndl, (char const*)"checkOccupiedMem");
#endif
assert(hndl);
assert(status);
assert(count);
assert(occupiedMem);
assert(checkOccupiedMem);
time_t startTime = time((time_t*)0);
time_t runTime = (time_t)(RUNTIME);
@ -52,9 +52,9 @@ int main(int argc, char* argv[])
status();
/* printf("2. sleeping...\n"); */
sleep(1);
occupiedMem();
checkOccupiedMem();
accumTime = time((time_t*)0) - startTime;
printf("--- Minutes left to run: %d\n", (int)(runTime-accumTime)/60);
/* printf("--- Minutes left to run: %d\n", (int)(runTime-accumTime)/60); */
}
printf("Cleaning up the shared object pointer...\n");
#ifdef WIN
@ -65,7 +65,3 @@ int main(int argc, char* argv[])
printf("Done\n");
return 0;
}

View file

@ -1,10 +0,0 @@
set CXX=gcc
set LIBS=-ldl
set LNFLAGS=
set CFLAGS=-DWIN
set INC=
nim c shared.nim
nim c -o:nmain main.nim
%CXX% %INC% %DEFS% %CFLAGS% -o cmain main.c %LNFLAGS% %LIBS%

View file

@ -3,38 +3,44 @@ discard """
output: "Done"
"""
import times
import os
import times, os, threadpool
const RUNTIME = 15 * 60 # 15 minutes
when defined(windows):
const dllname = "./shared.dll"
const dllname = "./tests/realtimeGC/shared.dll"
elif defined(macosx):
const dllname = "./libshared.dylib"
const dllname = "./tests/realtimeGC/libshared.dylib"
else:
const dllname = "./libshared.so"
const dllname = "./tests/realtimeGC/libshared.so"
proc status() {.importc: "status", dynlib: dllname.}
proc count() {.importc: "count", dynlib: dllname.}
proc occupiedMem() {.importc: "occupiedMem", dynlib: dllname.}
proc checkOccupiedMem() {.importc: "checkOccupiedMem", dynlib: dllname.}
proc main() =
proc process() =
let startTime = getTime()
let runTime = cast[Time](RUNTIME) #
var accumTime: Time
while accumTime < runTime:
for i in 0..10:
count()
#echo("1. sleeping... ")
# echo("1. sleeping... ")
sleep(500)
for i in 0..10:
status()
#echo("2. sleeping... ")
# echo("2. sleeping... ")
sleep(500)
occupiedMem()
checkOccupiedMem()
accumTime = cast[Time]((getTime() - startTime))
#echo("--- Minutes left to run: ", int(int(runTime-accumTime)/60))
# echo("--- Minutes left to run: ", int(int(runTime-accumTime)/60))
proc main() =
process()
# parallel:
# for i in 0..0:
# spawn process()
# sync()
echo("Done")
main()

View file

@ -4,6 +4,8 @@ discard """
import strutils
# Global state, accessing with threads, no locks. Don't do this at
# home.
var gCounter: uint64
var gTxStatus: bool
var gRxStatus: bool
@ -55,7 +57,7 @@ proc count() {.exportc: "count", dynlib.} =
gCounter += 1
# echo("gCounter: ", gCounter)
proc occupiedMem() {.exportc: "occupiedMem", dynlib.} =
echo("Occupied Memmory: ", getOccupiedMem())
proc checkOccupiedMem() {.exportc: "checkOccupiedMem", dynlib.} =
if getOccupiedMem() > 10_000_000:
quit 1
discard

View file

@ -1,4 +1,3 @@
--app:lib
--threads:on