timeout: use uint64_t for all plain time values

This enforces the use of unsigned 64-bit values for time in the duration type,
the timeout framework, the timer session, the userland timer-drivers, and the
alarm framework on all platforms. The commit also adapts the code that uses
these tools accross all basic repositories (base, base-*, os. gems, libports,
ports, dde_*) to use unsigned 64-bit values for time as well as far as this
does not imply profound modifications.

Fixes #3208
This commit is contained in:
Martin Stein
2019-04-09 15:46:36 +02:00
committed by Christian Helmuth
parent e072ee480b
commit 181c78d482
122 changed files with 537 additions and 609 deletions

View File

@ -19,7 +19,12 @@
#include <base/signal.h>
#include <session/session.h>
namespace Timer { struct Session; }
namespace Timer {
using Genode::uint64_t;
struct Session;
}
struct Timer::Session : Genode::Session
@ -38,7 +43,7 @@ struct Timer::Session : Genode::Session
/**
* Program single timeout (relative from now in microseconds)
*/
virtual void trigger_once(unsigned us) = 0;
virtual void trigger_once(uint64_t us) = 0;
/**
* Program periodic timeout (in microseconds)
@ -46,7 +51,7 @@ struct Timer::Session : Genode::Session
* The first period will be triggered after 'us' at the latest,
* but it might be triggered earlier as well.
*/
virtual void trigger_periodic(unsigned us) = 0;
virtual void trigger_periodic(uint64_t us) = 0;
/**
* Register timeout signal handler
@ -56,32 +61,32 @@ struct Timer::Session : Genode::Session
/**
* Return number of elapsed milliseconds since session creation
*/
virtual unsigned long elapsed_ms() const = 0;
virtual uint64_t elapsed_ms() const = 0;
virtual unsigned long elapsed_us() const = 0;
virtual uint64_t elapsed_us() const = 0;
/**
* Client-side convenience method for sleeping the specified number
* of milliseconds
*/
virtual void msleep(unsigned ms) = 0;
virtual void msleep(uint64_t ms) = 0;
/**
* Client-side convenience method for sleeping the specified number
* of microseconds
*/
virtual void usleep(unsigned us) = 0;
virtual void usleep(uint64_t us) = 0;
/*********************
** RPC declaration **
*********************/
GENODE_RPC(Rpc_trigger_once, void, trigger_once, unsigned);
GENODE_RPC(Rpc_trigger_periodic, void, trigger_periodic, unsigned);
GENODE_RPC(Rpc_trigger_once, void, trigger_once, uint64_t);
GENODE_RPC(Rpc_trigger_periodic, void, trigger_periodic, uint64_t);
GENODE_RPC(Rpc_sigh, void, sigh, Genode::Signal_context_capability);
GENODE_RPC(Rpc_elapsed_ms, unsigned long, elapsed_ms);
GENODE_RPC(Rpc_elapsed_us, unsigned long, elapsed_us);
GENODE_RPC(Rpc_elapsed_ms, uint64_t, elapsed_ms);
GENODE_RPC(Rpc_elapsed_us, uint64_t, elapsed_us);
GENODE_RPC_INTERFACE(Rpc_trigger_once, Rpc_trigger_periodic,
Rpc_sigh, Rpc_elapsed_ms, Rpc_elapsed_us);