xref: /netbsd-src/external/gpl3/gdb/dist/sim/common/hw-events.h (revision 88241920d21b339bf319c0e979ffda80c49a2936)
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