Home | History | Annotate | Line # | Download | only in common
      1 /* Hardware event manager.
      2    Copyright (C) 1998-2024 Free Software Foundation, Inc.
      3    Contributed by Cygnus Support.
      4 
      5 This file is part of GDB, the GNU debugger.
      6 
      7 This program is free software; you can redistribute it and/or modify
      8 it under the terms of the GNU General Public License as published by
      9 the Free Software Foundation; either version 3 of the License, or
     10 (at your option) any later version.
     11 
     12 This program is distributed in the hope that it will be useful,
     13 but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 GNU General Public License for more details.
     16 
     17 You should have received a copy of the GNU General Public License
     18 along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #ifndef HW_EVENTS_H
     21 #define HW_EVENTS_H
     22 
     23 #include <stdarg.h>
     24 
     25 #include "ansidecl.h"
     26 
     27 /* Event manager customized for hardware models.
     28 
     29    This interface is discussed further in sim-events.h. */
     30 
     31 struct hw_event;
     32 typedef void (hw_event_callback) (struct hw *me, void *data);
     33 
     34 struct hw_event *hw_event_queue_schedule
     35 (struct hw *me,
     36  int64_t delta_time,
     37  hw_event_callback *handler,
     38  void *data);
     39 
     40 struct hw_event *hw_event_queue_schedule_tracef
     41 (struct hw *me,
     42  int64_t delta_time,
     43  hw_event_callback *handler,
     44  void *data,
     45  const char *fmt,
     46  ...) ATTRIBUTE_NULL_PRINTF (5, 6);
     47 
     48 struct hw_event *hw_event_queue_schedule_vtracef
     49 (struct hw *me,
     50  int64_t delta_time,
     51  hw_event_callback *handler,
     52  void *data,
     53  const char *fmt,
     54  va_list ap) ATTRIBUTE_NULL_PRINTF (5, 0);
     55 
     56 
     57 void hw_event_queue_deschedule
     58 (struct hw *me,
     59  struct hw_event *event_to_remove);
     60 
     61 int64_t hw_event_queue_time
     62 (struct hw *me);
     63 
     64 /* Returns the time that remains before the event is raised. */
     65 int64_t hw_event_remain_time
     66 (struct hw *me, struct hw_event *event);
     67 
     68 #endif
     69