// TSTAMP_MAX must still fit into a positive struct timeval
#define TSTAMP_MAX (double)(1UL<<31)
+// this is a dummy time watcher to ensure that the first
+// time watcher is _always_ valid, this gets rid of a lot
+// of null-pointer-checks
+// (must come _before_ iom is being defined)
+static struct tw0 : time_watcher {
+ void cb (time_watcher &w)
+ {
+ // should never get called
+ // reached end-of-time, or tstamp has a bogus definition,
+ // or compiler initilization order broken, or somethine else :)
+ abort ();
+ }
+
+ tw0()
+ : time_watcher (this, &tw0::cb)
+ { }
+} tw0;
+
tstamp NOW;
static bool iom_valid;
io_manager iom;
}
}
-// this is a dummy time watcher to ensure that the first
-// time watcher is _always_ valid, this gets rid of a lot
-// of null-pointer-checks
-static struct tw0 : time_watcher {
- void cb (time_watcher &w)
- {
- // should never get called
- // reached end-of-time, or tstamp has a bogus definition :)
- abort ();
- }
-
- tw0()
- : time_watcher (this, &tw0::cb)
- { }
-} tw0;
-
io_manager::io_manager ()
{
iom_valid = true;
set_now ();
tw0.start (TSTAMP_MAX);
+ printf ("abort, %f but inly on %f\n", NOW, tw0.at);
#endif
}
template<class O1, class O2>
time_watcher (O1 *object, void (O2::*method)(time_watcher &))
- : callback1<void, time_watcher &>(object,method)
+ : callback1<void, time_watcher &>(object,method), at(0)
{ }
~time_watcher () { stop (); }
};