Home | History | Annotate | Line # | Download | only in common
      1 /* The common simulator framework for GDB, the GNU Debugger.
      2 
      3    Copyright 2002-2024 Free Software Foundation, Inc.
      4 
      5    Contributed by Andrew Cagney and Red Hat.
      6 
      7    This file is part of GDB.
      8 
      9    This program is free software; you can redistribute it and/or modify
     10    it under the terms of the GNU General Public License as published by
     11    the Free Software Foundation; either version 3 of the License, or
     12    (at your option) any later version.
     13 
     14    This program is distributed in the hope that it will be useful,
     15    but WITHOUT ANY WARRANTY; without even the implied warranty of
     16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17    GNU General Public License for more details.
     18 
     19    You should have received a copy of the GNU General Public License
     20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     21 
     22 
     23 #ifndef HW_BASE
     24 #define HW_BASE
     25 
     26 /* Create a primitive device */
     27 
     28 struct hw *hw_create
     29 (struct sim_state *sd,
     30  struct hw *parent,
     31  const char *family,
     32  const char *name,
     33  const char *unit,
     34  const char *args);
     35 
     36 
     37 /* Complete the creation of that device (finish overrides methods
     38    using the set_hw_* operations below) */
     39 
     40 void hw_finish
     41 (struct hw *me);
     42 
     43 int hw_finished_p
     44 (struct hw *me);
     45 
     46 
     47 /* Delete the entire device */
     48 
     49 void hw_delete
     50 (struct hw *me);
     51 
     52 
     53 /* Override device methods */
     54 
     55 typedef void (hw_delete_callback)
     56      (struct hw *me);
     57 
     58 extern void set_hw_delete(struct hw* hw, hw_delete_callback method);
     59 
     60 
     61 /* ALLOC */
     62 
     63 extern void create_hw_alloc_data
     64 (struct hw *hw);
     65 extern void delete_hw_alloc_data
     66 (struct hw *hw);
     67 
     68 
     69 /* PORTS */
     70 
     71 extern void create_hw_port_data
     72 (struct hw *hw);
     73 extern void delete_hw_port_data
     74 (struct hw *hw);
     75 
     76 
     77 /* PROPERTIES */
     78 
     79 extern void create_hw_property_data
     80 (struct hw *hw);
     81 extern void delete_hw_property_data
     82 (struct hw *hw);
     83 
     84 
     85 /* EVENTS */
     86 
     87 extern void create_hw_event_data
     88 (struct hw *hw);
     89 extern void delete_hw_event_data
     90 (struct hw *hw);
     91 
     92 
     93 /* HANDLES */
     94 
     95 extern void create_hw_handle_data
     96 (struct hw *hw);
     97 extern void delete_hw_handle_data
     98 (struct hw *hw);
     99 
    100 
    101 /* INSTANCES */
    102 
    103 extern void create_hw_instance_data
    104 (struct hw *hw);
    105 extern void delete_hw_instance_data
    106 (struct hw *hw);
    107 
    108 
    109 #endif
    110