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