2003-06-17 Doug Evans <dje@sebabeach.org>
[binutils-gdb.git] / sim / common / hw-events.c
index 31c5a4026ab3350d9915fecc26c951e197b1511b..78cceb66d91104bf19e134a0cd52296bbe154f13 100644 (file)
@@ -51,8 +51,9 @@ create_hw_event_data (struct hw *me)
 void
 delete_hw_event_data (struct hw *me)
 {
-  if (me->events_of_hw != NULL)
-    hw_abort (me, "stray events");
+  /* Remove the scheduled event.  */
+  while (me->events_of_hw)
+    hw_event_queue_deschedule (me, &me->events_of_hw->event);
 }
 
 
@@ -87,6 +88,7 @@ hw_event_queue_schedule (struct hw *me,
 {
   struct hw_event *event;
   va_list dummy;
+  memset (&dummy, 0, sizeof dummy);
   event = hw_event_queue_schedule_vtracef (me, delta_time, callback, data,
                                           NULL, dummy);
   return event;
@@ -164,6 +166,15 @@ hw_event_queue_time (struct hw *me)
   return sim_events_time (hw_system (me));
 }
 
+/* Returns the time that remains before the event is raised. */
+signed64
+hw_event_remain_time (struct hw *me, struct hw_event *event)
+{
+  signed64 t;
+
+  t = sim_events_remain_time (hw_system (me), event->real);
+  return t;
+}
 
 /* Only worry about this compling on ANSI systems.
    Build with `make test-hw-events' in sim/<cpu> directory*/