Update TestUO1 utilities

Ref #74
This commit is contained in:
Emery Hemingway
2017-08-28 09:23:49 -05:00
committed by Norman Feske
parent 7370cc7410
commit 800c3e940f
5 changed files with 42 additions and 11 deletions

View File

@@ -1,12 +1,24 @@
#include <timer_session/connection.h> #include <genode_init.h>
#include <base/printf.h> #include <base/printf.h>
Genode::Allocator *_heap = nullptr;
Timer::Connection *_timer = nullptr;
void testu01_init(Genode::Allocator &heap, Timer::Connection &timer)
{
_heap = &heap;
_timer = &timer;
}
/* XXX: should be the CPU session time, but the timer works for now */ /* XXX: should be the CPU session time, but the timer works for now */
static void Heure (unsigned long *tsec, unsigned long *tusec) static void Heure (unsigned long *tsec, unsigned long *tusec)
{ {
static Timer::Connection timer; if (!_timer)
Genode::error("library not initialized with 'testu01_init'!");
unsigned long ms = timer.elapsed_ms(); unsigned long ms = _timer->elapsed_ms();
*tsec = ms / 1000; *tsec = ms / 1000;
*tusec = ms * 1000; *tusec = ms * 1000;
@@ -25,13 +37,16 @@ void chrono_Init (chrono_Chrono *C) {
chrono_Chrono * chrono_Create (void) chrono_Chrono * chrono_Create (void)
{ {
chrono_Chrono *C = new (Genode::env()->heap()) chrono_Chrono; if (!_heap)
Genode::error("library not initialized with 'testu01_init'!");
chrono_Chrono *C = new (*_heap) chrono_Chrono;
Heure(&C->second, &C->microsec); Heure(&C->second, &C->microsec);
return C; return C;
} }
void chrono_Delete (chrono_Chrono *C) { destroy(Genode::env()->heap(), C); } void chrono_Delete (chrono_Chrono *C) { destroy(*_heap, C); }
double chrono_Val (chrono_Chrono *C, chrono_TimeFormat Unit) double chrono_Val (chrono_Chrono *C, chrono_TimeFormat Unit)

View File

@@ -7,9 +7,7 @@ extern "C" {
void gdef_GetHostName (char machine[], int n) void gdef_GetHostName (char machine[], int n)
{ {
Genode::Attached_rom_dataspace config("config"); if (n) *machine = '\0';
try { config.xml().attribute("hostname").value(machine, n); }
catch (...) { Genode::strncpy(machine, "genode", n); }
} }
void gdef_WriteHostName (void) { } void gdef_WriteHostName (void) { }

View File

@@ -1,5 +1,8 @@
#include <testu01/genode_init.h>
#include <base/attached_rom_dataspace.h> #include <base/attached_rom_dataspace.h>
#include <libc/component.h> #include <libc/component.h>
#include <base/heap.h>
#include <base/log.h> #include <base/log.h>
extern "C" { extern "C" {
@@ -30,7 +33,13 @@ void Libc::Component::construct(Libc::Env &env)
return; return;
} }
bbattery_AlphabitFile((char *)file.string(), nbits); Heap heap(env.pd(), env.rm());
Timer::Connection timer(env);
testu01_init(heap, timer);
Libc::with_libc([&] () {
bbattery_AlphabitFile((char *)file.string(), nbits); });
env.parent().exit(0); env.parent().exit(0);
} }

View File

@@ -1,3 +1,3 @@
TARGET = testu01_alphabet TARGET = testu01_alphabit
LIBS += testu01 libc libm LIBS += testu01 libc libm
SRC_CC = main.cc SRC_CC = main.cc

View File

@@ -1,5 +1,8 @@
#include <testu01/genode_init.h>
#include <base/attached_rom_dataspace.h> #include <base/attached_rom_dataspace.h>
#include <libc/component.h> #include <libc/component.h>
#include <base/heap.h>
#include <base/log.h> #include <base/log.h>
extern "C" { extern "C" {
@@ -36,7 +39,13 @@ void Libc::Component::construct(Libc::Env &env)
return; return;
} }
bbattery_RabbitFile((char *)file.string(), nbits); Heap heap(env.pd(), env.rm());
Timer::Connection timer(env);
testu01_init(heap, timer);
Libc::with_libc([&] () {
bbattery_RabbitFile((char *)file.string(), nbits); });
env.parent().exit(0); env.parent().exit(0);
} }