Home | History | Annotate | Line # | Download | only in arm
      1  1.1  christos /* This file is automatically generated.  DO NOT EDIT! */
      2  1.6  christos /* Generated from: NetBSD: mknative-gdb,v 1.7 2016/10/16 04:37:42 mrg Exp  */
      3  1.6  christos /* Generated from: NetBSD: mknative.common,v 1.15 2017/11/29 03:32:28 christos Exp  */
      4  1.1  christos 
      5  1.1  christos /* GDB Notifications to Observers.
      6  1.1  christos 
      7  1.6  christos    Copyright (C) 2004-2017 Free Software Foundation, Inc.
      8  1.1  christos 
      9  1.1  christos    This file is part of GDB.
     10  1.1  christos 
     11  1.1  christos    This program is free software; you can redistribute it and/or modify
     12  1.1  christos    it under the terms of the GNU General Public License as published by
     13  1.1  christos    the Free Software Foundation; either version 3 of the License, or
     14  1.1  christos    (at your option) any later version.
     15  1.1  christos 
     16  1.1  christos    This program is distributed in the hope that it will be useful,
     17  1.1  christos    but WITHOUT ANY WARRANTY; without even the implied warranty of
     18  1.1  christos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     19  1.1  christos    GNU General Public License for more details.
     20  1.1  christos 
     21  1.1  christos    You should have received a copy of the GNU General Public License
     22  1.1  christos    along with this program.  If not, see <http://www.gnu.org/licenses/>.
     23  1.1  christos 
     24  1.1  christos    --
     25  1.1  christos 
     26  1.1  christos    This file was generated using observer.sh and observer.texi.  */
     27  1.1  christos 
     28  1.1  christos 
     29  1.1  christos /* normal_stop notifications.  */
     30  1.1  christos 
     31  1.1  christos static struct observer_list *normal_stop_subject = NULL;
     32  1.1  christos 
     33  1.1  christos struct normal_stop_args { struct bpstats *bs; int print_frame; };
     34  1.1  christos 
     35  1.1  christos static void
     36  1.1  christos observer_normal_stop_notification_stub (const void *data, const void *args_data)
     37  1.1  christos {
     38  1.1  christos   observer_normal_stop_ftype *notify = (observer_normal_stop_ftype *) data;
     39  1.5       mrg   const struct normal_stop_args *args = (const struct normal_stop_args *) args_data;
     40  1.1  christos   notify (args->bs, args->print_frame);
     41  1.1  christos }
     42  1.1  christos 
     43  1.1  christos struct observer *
     44  1.1  christos observer_attach_normal_stop (observer_normal_stop_ftype *f)
     45  1.1  christos {
     46  1.1  christos   return generic_observer_attach (&normal_stop_subject,
     47  1.1  christos 				  &observer_normal_stop_notification_stub,
     48  1.1  christos 				  (void *) f);
     49  1.1  christos }
     50  1.1  christos 
     51  1.1  christos void
     52  1.1  christos observer_detach_normal_stop (struct observer *observer)
     53  1.1  christos {
     54  1.1  christos   generic_observer_detach (&normal_stop_subject, observer);
     55  1.1  christos }
     56  1.1  christos 
     57  1.1  christos void
     58  1.1  christos observer_notify_normal_stop (struct bpstats *bs, int print_frame)
     59  1.1  christos {
     60  1.1  christos   struct normal_stop_args args;
     61  1.1  christos   args.bs = bs, args.print_frame = print_frame;
     62  1.1  christos 
     63  1.1  christos   if (observer_debug)
     64  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_normal_stop() called\n");
     65  1.1  christos   generic_observer_notify (normal_stop_subject, &args);
     66  1.1  christos }
     67  1.1  christos 
     68  1.4  christos /* signal_received notifications.  */
     69  1.4  christos 
     70  1.4  christos static struct observer_list *signal_received_subject = NULL;
     71  1.4  christos 
     72  1.4  christos struct signal_received_args { enum gdb_signal siggnal; };
     73  1.4  christos 
     74  1.4  christos static void
     75  1.4  christos observer_signal_received_notification_stub (const void *data, const void *args_data)
     76  1.4  christos {
     77  1.4  christos   observer_signal_received_ftype *notify = (observer_signal_received_ftype *) data;
     78  1.5       mrg   const struct signal_received_args *args = (const struct signal_received_args *) args_data;
     79  1.4  christos   notify (args->siggnal);
     80  1.4  christos }
     81  1.4  christos 
     82  1.4  christos struct observer *
     83  1.4  christos observer_attach_signal_received (observer_signal_received_ftype *f)
     84  1.4  christos {
     85  1.4  christos   return generic_observer_attach (&signal_received_subject,
     86  1.4  christos 				  &observer_signal_received_notification_stub,
     87  1.4  christos 				  (void *) f);
     88  1.4  christos }
     89  1.4  christos 
     90  1.4  christos void
     91  1.4  christos observer_detach_signal_received (struct observer *observer)
     92  1.4  christos {
     93  1.4  christos   generic_observer_detach (&signal_received_subject, observer);
     94  1.4  christos }
     95  1.4  christos 
     96  1.4  christos void
     97  1.4  christos observer_notify_signal_received (enum gdb_signal siggnal)
     98  1.4  christos {
     99  1.4  christos   struct signal_received_args args;
    100  1.4  christos   args.siggnal = siggnal;
    101  1.4  christos 
    102  1.4  christos   if (observer_debug)
    103  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_signal_received() called\n");
    104  1.4  christos   generic_observer_notify (signal_received_subject, &args);
    105  1.4  christos }
    106  1.4  christos 
    107  1.4  christos /* end_stepping_range notifications.  */
    108  1.4  christos 
    109  1.4  christos static struct observer_list *end_stepping_range_subject = NULL;
    110  1.4  christos 
    111  1.4  christos static void
    112  1.4  christos observer_end_stepping_range_notification_stub (const void *data, const void *args_data)
    113  1.4  christos {
    114  1.4  christos   observer_end_stepping_range_ftype *notify = (observer_end_stepping_range_ftype *) data;
    115  1.4  christos   notify ();
    116  1.4  christos }
    117  1.4  christos 
    118  1.4  christos struct observer *
    119  1.4  christos observer_attach_end_stepping_range (observer_end_stepping_range_ftype *f)
    120  1.4  christos {
    121  1.4  christos   return generic_observer_attach (&end_stepping_range_subject,
    122  1.4  christos 				  &observer_end_stepping_range_notification_stub,
    123  1.4  christos 				  (void *) f);
    124  1.4  christos }
    125  1.4  christos 
    126  1.4  christos void
    127  1.4  christos observer_detach_end_stepping_range (struct observer *observer)
    128  1.4  christos {
    129  1.4  christos   generic_observer_detach (&end_stepping_range_subject, observer);
    130  1.4  christos }
    131  1.4  christos 
    132  1.4  christos void
    133  1.4  christos observer_notify_end_stepping_range (void)
    134  1.4  christos {
    135  1.4  christos char *args = NULL;
    136  1.4  christos   if (observer_debug)
    137  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_end_stepping_range() called\n");
    138  1.4  christos   generic_observer_notify (end_stepping_range_subject, &args);
    139  1.4  christos }
    140  1.4  christos 
    141  1.4  christos /* signal_exited notifications.  */
    142  1.4  christos 
    143  1.4  christos static struct observer_list *signal_exited_subject = NULL;
    144  1.4  christos 
    145  1.4  christos struct signal_exited_args { enum gdb_signal siggnal; };
    146  1.4  christos 
    147  1.4  christos static void
    148  1.4  christos observer_signal_exited_notification_stub (const void *data, const void *args_data)
    149  1.4  christos {
    150  1.4  christos   observer_signal_exited_ftype *notify = (observer_signal_exited_ftype *) data;
    151  1.5       mrg   const struct signal_exited_args *args = (const struct signal_exited_args *) args_data;
    152  1.4  christos   notify (args->siggnal);
    153  1.4  christos }
    154  1.4  christos 
    155  1.4  christos struct observer *
    156  1.4  christos observer_attach_signal_exited (observer_signal_exited_ftype *f)
    157  1.4  christos {
    158  1.4  christos   return generic_observer_attach (&signal_exited_subject,
    159  1.4  christos 				  &observer_signal_exited_notification_stub,
    160  1.4  christos 				  (void *) f);
    161  1.4  christos }
    162  1.4  christos 
    163  1.4  christos void
    164  1.4  christos observer_detach_signal_exited (struct observer *observer)
    165  1.4  christos {
    166  1.4  christos   generic_observer_detach (&signal_exited_subject, observer);
    167  1.4  christos }
    168  1.4  christos 
    169  1.4  christos void
    170  1.4  christos observer_notify_signal_exited (enum gdb_signal siggnal)
    171  1.4  christos {
    172  1.4  christos   struct signal_exited_args args;
    173  1.4  christos   args.siggnal = siggnal;
    174  1.4  christos 
    175  1.4  christos   if (observer_debug)
    176  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_signal_exited() called\n");
    177  1.4  christos   generic_observer_notify (signal_exited_subject, &args);
    178  1.4  christos }
    179  1.4  christos 
    180  1.4  christos /* exited notifications.  */
    181  1.4  christos 
    182  1.4  christos static struct observer_list *exited_subject = NULL;
    183  1.4  christos 
    184  1.4  christos struct exited_args { int exitstatus; };
    185  1.4  christos 
    186  1.4  christos static void
    187  1.4  christos observer_exited_notification_stub (const void *data, const void *args_data)
    188  1.4  christos {
    189  1.4  christos   observer_exited_ftype *notify = (observer_exited_ftype *) data;
    190  1.5       mrg   const struct exited_args *args = (const struct exited_args *) args_data;
    191  1.4  christos   notify (args->exitstatus);
    192  1.4  christos }
    193  1.4  christos 
    194  1.4  christos struct observer *
    195  1.4  christos observer_attach_exited (observer_exited_ftype *f)
    196  1.4  christos {
    197  1.4  christos   return generic_observer_attach (&exited_subject,
    198  1.4  christos 				  &observer_exited_notification_stub,
    199  1.4  christos 				  (void *) f);
    200  1.4  christos }
    201  1.4  christos 
    202  1.4  christos void
    203  1.4  christos observer_detach_exited (struct observer *observer)
    204  1.4  christos {
    205  1.4  christos   generic_observer_detach (&exited_subject, observer);
    206  1.4  christos }
    207  1.4  christos 
    208  1.4  christos void
    209  1.4  christos observer_notify_exited (int exitstatus)
    210  1.4  christos {
    211  1.4  christos   struct exited_args args;
    212  1.4  christos   args.exitstatus = exitstatus;
    213  1.4  christos 
    214  1.4  christos   if (observer_debug)
    215  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_exited() called\n");
    216  1.4  christos   generic_observer_notify (exited_subject, &args);
    217  1.4  christos }
    218  1.4  christos 
    219  1.4  christos /* no_history notifications.  */
    220  1.4  christos 
    221  1.4  christos static struct observer_list *no_history_subject = NULL;
    222  1.4  christos 
    223  1.4  christos static void
    224  1.4  christos observer_no_history_notification_stub (const void *data, const void *args_data)
    225  1.4  christos {
    226  1.4  christos   observer_no_history_ftype *notify = (observer_no_history_ftype *) data;
    227  1.4  christos   notify ();
    228  1.4  christos }
    229  1.4  christos 
    230  1.4  christos struct observer *
    231  1.4  christos observer_attach_no_history (observer_no_history_ftype *f)
    232  1.4  christos {
    233  1.4  christos   return generic_observer_attach (&no_history_subject,
    234  1.4  christos 				  &observer_no_history_notification_stub,
    235  1.4  christos 				  (void *) f);
    236  1.4  christos }
    237  1.4  christos 
    238  1.4  christos void
    239  1.4  christos observer_detach_no_history (struct observer *observer)
    240  1.4  christos {
    241  1.4  christos   generic_observer_detach (&no_history_subject, observer);
    242  1.4  christos }
    243  1.4  christos 
    244  1.4  christos void
    245  1.4  christos observer_notify_no_history (void)
    246  1.4  christos {
    247  1.4  christos char *args = NULL;
    248  1.4  christos   if (observer_debug)
    249  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_no_history() called\n");
    250  1.4  christos   generic_observer_notify (no_history_subject, &args);
    251  1.4  christos }
    252  1.4  christos 
    253  1.4  christos /* sync_execution_done notifications.  */
    254  1.4  christos 
    255  1.4  christos static struct observer_list *sync_execution_done_subject = NULL;
    256  1.4  christos 
    257  1.4  christos static void
    258  1.4  christos observer_sync_execution_done_notification_stub (const void *data, const void *args_data)
    259  1.4  christos {
    260  1.4  christos   observer_sync_execution_done_ftype *notify = (observer_sync_execution_done_ftype *) data;
    261  1.4  christos   notify ();
    262  1.4  christos }
    263  1.4  christos 
    264  1.4  christos struct observer *
    265  1.4  christos observer_attach_sync_execution_done (observer_sync_execution_done_ftype *f)
    266  1.4  christos {
    267  1.4  christos   return generic_observer_attach (&sync_execution_done_subject,
    268  1.4  christos 				  &observer_sync_execution_done_notification_stub,
    269  1.4  christos 				  (void *) f);
    270  1.4  christos }
    271  1.4  christos 
    272  1.4  christos void
    273  1.4  christos observer_detach_sync_execution_done (struct observer *observer)
    274  1.4  christos {
    275  1.4  christos   generic_observer_detach (&sync_execution_done_subject, observer);
    276  1.4  christos }
    277  1.4  christos 
    278  1.4  christos void
    279  1.4  christos observer_notify_sync_execution_done (void)
    280  1.4  christos {
    281  1.4  christos char *args = NULL;
    282  1.4  christos   if (observer_debug)
    283  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_sync_execution_done() called\n");
    284  1.4  christos   generic_observer_notify (sync_execution_done_subject, &args);
    285  1.4  christos }
    286  1.4  christos 
    287  1.4  christos /* command_error notifications.  */
    288  1.4  christos 
    289  1.4  christos static struct observer_list *command_error_subject = NULL;
    290  1.4  christos 
    291  1.4  christos static void
    292  1.4  christos observer_command_error_notification_stub (const void *data, const void *args_data)
    293  1.4  christos {
    294  1.4  christos   observer_command_error_ftype *notify = (observer_command_error_ftype *) data;
    295  1.4  christos   notify ();
    296  1.4  christos }
    297  1.4  christos 
    298  1.4  christos struct observer *
    299  1.4  christos observer_attach_command_error (observer_command_error_ftype *f)
    300  1.4  christos {
    301  1.4  christos   return generic_observer_attach (&command_error_subject,
    302  1.4  christos 				  &observer_command_error_notification_stub,
    303  1.4  christos 				  (void *) f);
    304  1.4  christos }
    305  1.4  christos 
    306  1.4  christos void
    307  1.4  christos observer_detach_command_error (struct observer *observer)
    308  1.4  christos {
    309  1.4  christos   generic_observer_detach (&command_error_subject, observer);
    310  1.4  christos }
    311  1.4  christos 
    312  1.4  christos void
    313  1.4  christos observer_notify_command_error (void)
    314  1.4  christos {
    315  1.4  christos char *args = NULL;
    316  1.4  christos   if (observer_debug)
    317  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_command_error() called\n");
    318  1.4  christos   generic_observer_notify (command_error_subject, &args);
    319  1.4  christos }
    320  1.4  christos 
    321  1.1  christos /* target_changed notifications.  */
    322  1.1  christos 
    323  1.1  christos static struct observer_list *target_changed_subject = NULL;
    324  1.1  christos 
    325  1.1  christos struct target_changed_args { struct target_ops *target; };
    326  1.1  christos 
    327  1.1  christos static void
    328  1.1  christos observer_target_changed_notification_stub (const void *data, const void *args_data)
    329  1.1  christos {
    330  1.1  christos   observer_target_changed_ftype *notify = (observer_target_changed_ftype *) data;
    331  1.5       mrg   const struct target_changed_args *args = (const struct target_changed_args *) args_data;
    332  1.1  christos   notify (args->target);
    333  1.1  christos }
    334  1.1  christos 
    335  1.1  christos struct observer *
    336  1.1  christos observer_attach_target_changed (observer_target_changed_ftype *f)
    337  1.1  christos {
    338  1.1  christos   return generic_observer_attach (&target_changed_subject,
    339  1.1  christos 				  &observer_target_changed_notification_stub,
    340  1.1  christos 				  (void *) f);
    341  1.1  christos }
    342  1.1  christos 
    343  1.1  christos void
    344  1.1  christos observer_detach_target_changed (struct observer *observer)
    345  1.1  christos {
    346  1.1  christos   generic_observer_detach (&target_changed_subject, observer);
    347  1.1  christos }
    348  1.1  christos 
    349  1.1  christos void
    350  1.1  christos observer_notify_target_changed (struct target_ops *target)
    351  1.1  christos {
    352  1.1  christos   struct target_changed_args args;
    353  1.1  christos   args.target = target;
    354  1.1  christos 
    355  1.1  christos   if (observer_debug)
    356  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_target_changed() called\n");
    357  1.1  christos   generic_observer_notify (target_changed_subject, &args);
    358  1.1  christos }
    359  1.1  christos 
    360  1.1  christos /* executable_changed notifications.  */
    361  1.1  christos 
    362  1.1  christos static struct observer_list *executable_changed_subject = NULL;
    363  1.1  christos 
    364  1.1  christos static void
    365  1.1  christos observer_executable_changed_notification_stub (const void *data, const void *args_data)
    366  1.1  christos {
    367  1.1  christos   observer_executable_changed_ftype *notify = (observer_executable_changed_ftype *) data;
    368  1.1  christos   notify ();
    369  1.1  christos }
    370  1.1  christos 
    371  1.1  christos struct observer *
    372  1.1  christos observer_attach_executable_changed (observer_executable_changed_ftype *f)
    373  1.1  christos {
    374  1.1  christos   return generic_observer_attach (&executable_changed_subject,
    375  1.1  christos 				  &observer_executable_changed_notification_stub,
    376  1.1  christos 				  (void *) f);
    377  1.1  christos }
    378  1.1  christos 
    379  1.1  christos void
    380  1.1  christos observer_detach_executable_changed (struct observer *observer)
    381  1.1  christos {
    382  1.1  christos   generic_observer_detach (&executable_changed_subject, observer);
    383  1.1  christos }
    384  1.1  christos 
    385  1.1  christos void
    386  1.1  christos observer_notify_executable_changed (void)
    387  1.1  christos {
    388  1.1  christos char *args = NULL;
    389  1.1  christos   if (observer_debug)
    390  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_executable_changed() called\n");
    391  1.1  christos   generic_observer_notify (executable_changed_subject, &args);
    392  1.1  christos }
    393  1.1  christos 
    394  1.1  christos /* inferior_created notifications.  */
    395  1.1  christos 
    396  1.1  christos static struct observer_list *inferior_created_subject = NULL;
    397  1.1  christos 
    398  1.1  christos struct inferior_created_args { struct target_ops *objfile; int from_tty; };
    399  1.1  christos 
    400  1.1  christos static void
    401  1.1  christos observer_inferior_created_notification_stub (const void *data, const void *args_data)
    402  1.1  christos {
    403  1.1  christos   observer_inferior_created_ftype *notify = (observer_inferior_created_ftype *) data;
    404  1.5       mrg   const struct inferior_created_args *args = (const struct inferior_created_args *) args_data;
    405  1.1  christos   notify (args->objfile, args->from_tty);
    406  1.1  christos }
    407  1.1  christos 
    408  1.1  christos struct observer *
    409  1.1  christos observer_attach_inferior_created (observer_inferior_created_ftype *f)
    410  1.1  christos {
    411  1.1  christos   return generic_observer_attach (&inferior_created_subject,
    412  1.1  christos 				  &observer_inferior_created_notification_stub,
    413  1.1  christos 				  (void *) f);
    414  1.1  christos }
    415  1.1  christos 
    416  1.1  christos void
    417  1.1  christos observer_detach_inferior_created (struct observer *observer)
    418  1.1  christos {
    419  1.1  christos   generic_observer_detach (&inferior_created_subject, observer);
    420  1.1  christos }
    421  1.1  christos 
    422  1.1  christos void
    423  1.1  christos observer_notify_inferior_created (struct target_ops *objfile, int from_tty)
    424  1.1  christos {
    425  1.1  christos   struct inferior_created_args args;
    426  1.1  christos   args.objfile = objfile, args.from_tty = from_tty;
    427  1.1  christos 
    428  1.1  christos   if (observer_debug)
    429  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_created() called\n");
    430  1.1  christos   generic_observer_notify (inferior_created_subject, &args);
    431  1.1  christos }
    432  1.1  christos 
    433  1.2  christos /* record_changed notifications.  */
    434  1.2  christos 
    435  1.2  christos static struct observer_list *record_changed_subject = NULL;
    436  1.2  christos 
    437  1.5       mrg struct record_changed_args { struct inferior *inferior; int started; const char *method; const char *format; };
    438  1.2  christos 
    439  1.2  christos static void
    440  1.2  christos observer_record_changed_notification_stub (const void *data, const void *args_data)
    441  1.2  christos {
    442  1.2  christos   observer_record_changed_ftype *notify = (observer_record_changed_ftype *) data;
    443  1.5       mrg   const struct record_changed_args *args = (const struct record_changed_args *) args_data;
    444  1.5       mrg   notify (args->inferior, args->started, args->method, args->format);
    445  1.2  christos }
    446  1.2  christos 
    447  1.2  christos struct observer *
    448  1.2  christos observer_attach_record_changed (observer_record_changed_ftype *f)
    449  1.2  christos {
    450  1.2  christos   return generic_observer_attach (&record_changed_subject,
    451  1.2  christos 				  &observer_record_changed_notification_stub,
    452  1.2  christos 				  (void *) f);
    453  1.2  christos }
    454  1.2  christos 
    455  1.2  christos void
    456  1.2  christos observer_detach_record_changed (struct observer *observer)
    457  1.2  christos {
    458  1.2  christos   generic_observer_detach (&record_changed_subject, observer);
    459  1.2  christos }
    460  1.2  christos 
    461  1.2  christos void
    462  1.5       mrg observer_notify_record_changed (struct inferior *inferior, int started, const char *method, const char *format)
    463  1.2  christos {
    464  1.2  christos   struct record_changed_args args;
    465  1.5       mrg   args.inferior = inferior, args.started = started, args.method = method, args.format = format;
    466  1.2  christos 
    467  1.2  christos   if (observer_debug)
    468  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_record_changed() called\n");
    469  1.2  christos   generic_observer_notify (record_changed_subject, &args);
    470  1.2  christos }
    471  1.2  christos 
    472  1.1  christos /* solib_loaded notifications.  */
    473  1.1  christos 
    474  1.1  christos static struct observer_list *solib_loaded_subject = NULL;
    475  1.1  christos 
    476  1.1  christos struct solib_loaded_args { struct so_list *solib; };
    477  1.1  christos 
    478  1.1  christos static void
    479  1.1  christos observer_solib_loaded_notification_stub (const void *data, const void *args_data)
    480  1.1  christos {
    481  1.1  christos   observer_solib_loaded_ftype *notify = (observer_solib_loaded_ftype *) data;
    482  1.5       mrg   const struct solib_loaded_args *args = (const struct solib_loaded_args *) args_data;
    483  1.1  christos   notify (args->solib);
    484  1.1  christos }
    485  1.1  christos 
    486  1.1  christos struct observer *
    487  1.1  christos observer_attach_solib_loaded (observer_solib_loaded_ftype *f)
    488  1.1  christos {
    489  1.1  christos   return generic_observer_attach (&solib_loaded_subject,
    490  1.1  christos 				  &observer_solib_loaded_notification_stub,
    491  1.1  christos 				  (void *) f);
    492  1.1  christos }
    493  1.1  christos 
    494  1.1  christos void
    495  1.1  christos observer_detach_solib_loaded (struct observer *observer)
    496  1.1  christos {
    497  1.1  christos   generic_observer_detach (&solib_loaded_subject, observer);
    498  1.1  christos }
    499  1.1  christos 
    500  1.1  christos void
    501  1.1  christos observer_notify_solib_loaded (struct so_list *solib)
    502  1.1  christos {
    503  1.1  christos   struct solib_loaded_args args;
    504  1.1  christos   args.solib = solib;
    505  1.1  christos 
    506  1.1  christos   if (observer_debug)
    507  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_solib_loaded() called\n");
    508  1.1  christos   generic_observer_notify (solib_loaded_subject, &args);
    509  1.1  christos }
    510  1.1  christos 
    511  1.1  christos /* solib_unloaded notifications.  */
    512  1.1  christos 
    513  1.1  christos static struct observer_list *solib_unloaded_subject = NULL;
    514  1.1  christos 
    515  1.1  christos struct solib_unloaded_args { struct so_list *solib; };
    516  1.1  christos 
    517  1.1  christos static void
    518  1.1  christos observer_solib_unloaded_notification_stub (const void *data, const void *args_data)
    519  1.1  christos {
    520  1.1  christos   observer_solib_unloaded_ftype *notify = (observer_solib_unloaded_ftype *) data;
    521  1.5       mrg   const struct solib_unloaded_args *args = (const struct solib_unloaded_args *) args_data;
    522  1.1  christos   notify (args->solib);
    523  1.1  christos }
    524  1.1  christos 
    525  1.1  christos struct observer *
    526  1.1  christos observer_attach_solib_unloaded (observer_solib_unloaded_ftype *f)
    527  1.1  christos {
    528  1.1  christos   return generic_observer_attach (&solib_unloaded_subject,
    529  1.1  christos 				  &observer_solib_unloaded_notification_stub,
    530  1.1  christos 				  (void *) f);
    531  1.1  christos }
    532  1.1  christos 
    533  1.1  christos void
    534  1.1  christos observer_detach_solib_unloaded (struct observer *observer)
    535  1.1  christos {
    536  1.1  christos   generic_observer_detach (&solib_unloaded_subject, observer);
    537  1.1  christos }
    538  1.1  christos 
    539  1.1  christos void
    540  1.1  christos observer_notify_solib_unloaded (struct so_list *solib)
    541  1.1  christos {
    542  1.1  christos   struct solib_unloaded_args args;
    543  1.1  christos   args.solib = solib;
    544  1.1  christos 
    545  1.1  christos   if (observer_debug)
    546  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_solib_unloaded() called\n");
    547  1.1  christos   generic_observer_notify (solib_unloaded_subject, &args);
    548  1.1  christos }
    549  1.1  christos 
    550  1.1  christos /* new_objfile notifications.  */
    551  1.1  christos 
    552  1.1  christos static struct observer_list *new_objfile_subject = NULL;
    553  1.1  christos 
    554  1.1  christos struct new_objfile_args { struct objfile *objfile; };
    555  1.1  christos 
    556  1.1  christos static void
    557  1.1  christos observer_new_objfile_notification_stub (const void *data, const void *args_data)
    558  1.1  christos {
    559  1.1  christos   observer_new_objfile_ftype *notify = (observer_new_objfile_ftype *) data;
    560  1.5       mrg   const struct new_objfile_args *args = (const struct new_objfile_args *) args_data;
    561  1.1  christos   notify (args->objfile);
    562  1.1  christos }
    563  1.1  christos 
    564  1.1  christos struct observer *
    565  1.1  christos observer_attach_new_objfile (observer_new_objfile_ftype *f)
    566  1.1  christos {
    567  1.1  christos   return generic_observer_attach (&new_objfile_subject,
    568  1.1  christos 				  &observer_new_objfile_notification_stub,
    569  1.1  christos 				  (void *) f);
    570  1.1  christos }
    571  1.1  christos 
    572  1.1  christos void
    573  1.1  christos observer_detach_new_objfile (struct observer *observer)
    574  1.1  christos {
    575  1.1  christos   generic_observer_detach (&new_objfile_subject, observer);
    576  1.1  christos }
    577  1.1  christos 
    578  1.1  christos void
    579  1.1  christos observer_notify_new_objfile (struct objfile *objfile)
    580  1.1  christos {
    581  1.1  christos   struct new_objfile_args args;
    582  1.1  christos   args.objfile = objfile;
    583  1.1  christos 
    584  1.1  christos   if (observer_debug)
    585  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_new_objfile() called\n");
    586  1.1  christos   generic_observer_notify (new_objfile_subject, &args);
    587  1.1  christos }
    588  1.1  christos 
    589  1.3       mrg /* free_objfile notifications.  */
    590  1.3       mrg 
    591  1.3       mrg static struct observer_list *free_objfile_subject = NULL;
    592  1.3       mrg 
    593  1.3       mrg struct free_objfile_args { struct objfile *objfile; };
    594  1.3       mrg 
    595  1.3       mrg static void
    596  1.3       mrg observer_free_objfile_notification_stub (const void *data, const void *args_data)
    597  1.3       mrg {
    598  1.3       mrg   observer_free_objfile_ftype *notify = (observer_free_objfile_ftype *) data;
    599  1.5       mrg   const struct free_objfile_args *args = (const struct free_objfile_args *) args_data;
    600  1.3       mrg   notify (args->objfile);
    601  1.3       mrg }
    602  1.3       mrg 
    603  1.3       mrg struct observer *
    604  1.3       mrg observer_attach_free_objfile (observer_free_objfile_ftype *f)
    605  1.3       mrg {
    606  1.3       mrg   return generic_observer_attach (&free_objfile_subject,
    607  1.3       mrg 				  &observer_free_objfile_notification_stub,
    608  1.3       mrg 				  (void *) f);
    609  1.3       mrg }
    610  1.3       mrg 
    611  1.3       mrg void
    612  1.3       mrg observer_detach_free_objfile (struct observer *observer)
    613  1.3       mrg {
    614  1.3       mrg   generic_observer_detach (&free_objfile_subject, observer);
    615  1.3       mrg }
    616  1.3       mrg 
    617  1.3       mrg void
    618  1.3       mrg observer_notify_free_objfile (struct objfile *objfile)
    619  1.3       mrg {
    620  1.3       mrg   struct free_objfile_args args;
    621  1.3       mrg   args.objfile = objfile;
    622  1.3       mrg 
    623  1.3       mrg   if (observer_debug)
    624  1.3       mrg     fprintf_unfiltered (gdb_stdlog, "observer_notify_free_objfile() called\n");
    625  1.3       mrg   generic_observer_notify (free_objfile_subject, &args);
    626  1.3       mrg }
    627  1.3       mrg 
    628  1.1  christos /* new_thread notifications.  */
    629  1.1  christos 
    630  1.1  christos static struct observer_list *new_thread_subject = NULL;
    631  1.1  christos 
    632  1.1  christos struct new_thread_args { struct thread_info *t; };
    633  1.1  christos 
    634  1.1  christos static void
    635  1.1  christos observer_new_thread_notification_stub (const void *data, const void *args_data)
    636  1.1  christos {
    637  1.1  christos   observer_new_thread_ftype *notify = (observer_new_thread_ftype *) data;
    638  1.5       mrg   const struct new_thread_args *args = (const struct new_thread_args *) args_data;
    639  1.1  christos   notify (args->t);
    640  1.1  christos }
    641  1.1  christos 
    642  1.1  christos struct observer *
    643  1.1  christos observer_attach_new_thread (observer_new_thread_ftype *f)
    644  1.1  christos {
    645  1.1  christos   return generic_observer_attach (&new_thread_subject,
    646  1.1  christos 				  &observer_new_thread_notification_stub,
    647  1.1  christos 				  (void *) f);
    648  1.1  christos }
    649  1.1  christos 
    650  1.1  christos void
    651  1.1  christos observer_detach_new_thread (struct observer *observer)
    652  1.1  christos {
    653  1.1  christos   generic_observer_detach (&new_thread_subject, observer);
    654  1.1  christos }
    655  1.1  christos 
    656  1.1  christos void
    657  1.1  christos observer_notify_new_thread (struct thread_info *t)
    658  1.1  christos {
    659  1.1  christos   struct new_thread_args args;
    660  1.1  christos   args.t = t;
    661  1.1  christos 
    662  1.1  christos   if (observer_debug)
    663  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_new_thread() called\n");
    664  1.1  christos   generic_observer_notify (new_thread_subject, &args);
    665  1.1  christos }
    666  1.1  christos 
    667  1.1  christos /* thread_exit notifications.  */
    668  1.1  christos 
    669  1.1  christos static struct observer_list *thread_exit_subject = NULL;
    670  1.1  christos 
    671  1.1  christos struct thread_exit_args { struct thread_info *t; int silent; };
    672  1.1  christos 
    673  1.1  christos static void
    674  1.1  christos observer_thread_exit_notification_stub (const void *data, const void *args_data)
    675  1.1  christos {
    676  1.1  christos   observer_thread_exit_ftype *notify = (observer_thread_exit_ftype *) data;
    677  1.5       mrg   const struct thread_exit_args *args = (const struct thread_exit_args *) args_data;
    678  1.1  christos   notify (args->t, args->silent);
    679  1.1  christos }
    680  1.1  christos 
    681  1.1  christos struct observer *
    682  1.1  christos observer_attach_thread_exit (observer_thread_exit_ftype *f)
    683  1.1  christos {
    684  1.1  christos   return generic_observer_attach (&thread_exit_subject,
    685  1.1  christos 				  &observer_thread_exit_notification_stub,
    686  1.1  christos 				  (void *) f);
    687  1.1  christos }
    688  1.1  christos 
    689  1.1  christos void
    690  1.1  christos observer_detach_thread_exit (struct observer *observer)
    691  1.1  christos {
    692  1.1  christos   generic_observer_detach (&thread_exit_subject, observer);
    693  1.1  christos }
    694  1.1  christos 
    695  1.1  christos void
    696  1.1  christos observer_notify_thread_exit (struct thread_info *t, int silent)
    697  1.1  christos {
    698  1.1  christos   struct thread_exit_args args;
    699  1.1  christos   args.t = t, args.silent = silent;
    700  1.1  christos 
    701  1.1  christos   if (observer_debug)
    702  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_thread_exit() called\n");
    703  1.1  christos   generic_observer_notify (thread_exit_subject, &args);
    704  1.1  christos }
    705  1.1  christos 
    706  1.1  christos /* thread_stop_requested notifications.  */
    707  1.1  christos 
    708  1.1  christos static struct observer_list *thread_stop_requested_subject = NULL;
    709  1.1  christos 
    710  1.1  christos struct thread_stop_requested_args { ptid_t ptid; };
    711  1.1  christos 
    712  1.1  christos static void
    713  1.1  christos observer_thread_stop_requested_notification_stub (const void *data, const void *args_data)
    714  1.1  christos {
    715  1.1  christos   observer_thread_stop_requested_ftype *notify = (observer_thread_stop_requested_ftype *) data;
    716  1.5       mrg   const struct thread_stop_requested_args *args = (const struct thread_stop_requested_args *) args_data;
    717  1.1  christos   notify (args->ptid);
    718  1.1  christos }
    719  1.1  christos 
    720  1.1  christos struct observer *
    721  1.1  christos observer_attach_thread_stop_requested (observer_thread_stop_requested_ftype *f)
    722  1.1  christos {
    723  1.1  christos   return generic_observer_attach (&thread_stop_requested_subject,
    724  1.1  christos 				  &observer_thread_stop_requested_notification_stub,
    725  1.1  christos 				  (void *) f);
    726  1.1  christos }
    727  1.1  christos 
    728  1.1  christos void
    729  1.1  christos observer_detach_thread_stop_requested (struct observer *observer)
    730  1.1  christos {
    731  1.1  christos   generic_observer_detach (&thread_stop_requested_subject, observer);
    732  1.1  christos }
    733  1.1  christos 
    734  1.1  christos void
    735  1.1  christos observer_notify_thread_stop_requested (ptid_t ptid)
    736  1.1  christos {
    737  1.1  christos   struct thread_stop_requested_args args;
    738  1.1  christos   args.ptid = ptid;
    739  1.1  christos 
    740  1.1  christos   if (observer_debug)
    741  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_thread_stop_requested() called\n");
    742  1.1  christos   generic_observer_notify (thread_stop_requested_subject, &args);
    743  1.1  christos }
    744  1.1  christos 
    745  1.1  christos /* target_resumed notifications.  */
    746  1.1  christos 
    747  1.1  christos static struct observer_list *target_resumed_subject = NULL;
    748  1.1  christos 
    749  1.1  christos struct target_resumed_args { ptid_t ptid; };
    750  1.1  christos 
    751  1.1  christos static void
    752  1.1  christos observer_target_resumed_notification_stub (const void *data, const void *args_data)
    753  1.1  christos {
    754  1.1  christos   observer_target_resumed_ftype *notify = (observer_target_resumed_ftype *) data;
    755  1.5       mrg   const struct target_resumed_args *args = (const struct target_resumed_args *) args_data;
    756  1.1  christos   notify (args->ptid);
    757  1.1  christos }
    758  1.1  christos 
    759  1.1  christos struct observer *
    760  1.1  christos observer_attach_target_resumed (observer_target_resumed_ftype *f)
    761  1.1  christos {
    762  1.1  christos   return generic_observer_attach (&target_resumed_subject,
    763  1.1  christos 				  &observer_target_resumed_notification_stub,
    764  1.1  christos 				  (void *) f);
    765  1.1  christos }
    766  1.1  christos 
    767  1.1  christos void
    768  1.1  christos observer_detach_target_resumed (struct observer *observer)
    769  1.1  christos {
    770  1.1  christos   generic_observer_detach (&target_resumed_subject, observer);
    771  1.1  christos }
    772  1.1  christos 
    773  1.1  christos void
    774  1.1  christos observer_notify_target_resumed (ptid_t ptid)
    775  1.1  christos {
    776  1.1  christos   struct target_resumed_args args;
    777  1.1  christos   args.ptid = ptid;
    778  1.1  christos 
    779  1.1  christos   if (observer_debug)
    780  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_target_resumed() called\n");
    781  1.1  christos   generic_observer_notify (target_resumed_subject, &args);
    782  1.1  christos }
    783  1.1  christos 
    784  1.1  christos /* about_to_proceed notifications.  */
    785  1.1  christos 
    786  1.1  christos static struct observer_list *about_to_proceed_subject = NULL;
    787  1.1  christos 
    788  1.1  christos static void
    789  1.1  christos observer_about_to_proceed_notification_stub (const void *data, const void *args_data)
    790  1.1  christos {
    791  1.1  christos   observer_about_to_proceed_ftype *notify = (observer_about_to_proceed_ftype *) data;
    792  1.1  christos   notify ();
    793  1.1  christos }
    794  1.1  christos 
    795  1.1  christos struct observer *
    796  1.1  christos observer_attach_about_to_proceed (observer_about_to_proceed_ftype *f)
    797  1.1  christos {
    798  1.1  christos   return generic_observer_attach (&about_to_proceed_subject,
    799  1.1  christos 				  &observer_about_to_proceed_notification_stub,
    800  1.1  christos 				  (void *) f);
    801  1.1  christos }
    802  1.1  christos 
    803  1.1  christos void
    804  1.1  christos observer_detach_about_to_proceed (struct observer *observer)
    805  1.1  christos {
    806  1.1  christos   generic_observer_detach (&about_to_proceed_subject, observer);
    807  1.1  christos }
    808  1.1  christos 
    809  1.1  christos void
    810  1.1  christos observer_notify_about_to_proceed (void)
    811  1.1  christos {
    812  1.1  christos char *args = NULL;
    813  1.1  christos   if (observer_debug)
    814  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_about_to_proceed() called\n");
    815  1.1  christos   generic_observer_notify (about_to_proceed_subject, &args);
    816  1.1  christos }
    817  1.1  christos 
    818  1.1  christos /* breakpoint_created notifications.  */
    819  1.1  christos 
    820  1.1  christos static struct observer_list *breakpoint_created_subject = NULL;
    821  1.1  christos 
    822  1.2  christos struct breakpoint_created_args { struct breakpoint *b; };
    823  1.1  christos 
    824  1.1  christos static void
    825  1.1  christos observer_breakpoint_created_notification_stub (const void *data, const void *args_data)
    826  1.1  christos {
    827  1.1  christos   observer_breakpoint_created_ftype *notify = (observer_breakpoint_created_ftype *) data;
    828  1.5       mrg   const struct breakpoint_created_args *args = (const struct breakpoint_created_args *) args_data;
    829  1.2  christos   notify (args->b);
    830  1.1  christos }
    831  1.1  christos 
    832  1.1  christos struct observer *
    833  1.1  christos observer_attach_breakpoint_created (observer_breakpoint_created_ftype *f)
    834  1.1  christos {
    835  1.1  christos   return generic_observer_attach (&breakpoint_created_subject,
    836  1.1  christos 				  &observer_breakpoint_created_notification_stub,
    837  1.1  christos 				  (void *) f);
    838  1.1  christos }
    839  1.1  christos 
    840  1.1  christos void
    841  1.1  christos observer_detach_breakpoint_created (struct observer *observer)
    842  1.1  christos {
    843  1.1  christos   generic_observer_detach (&breakpoint_created_subject, observer);
    844  1.1  christos }
    845  1.1  christos 
    846  1.1  christos void
    847  1.2  christos observer_notify_breakpoint_created (struct breakpoint *b)
    848  1.1  christos {
    849  1.1  christos   struct breakpoint_created_args args;
    850  1.2  christos   args.b = b;
    851  1.1  christos 
    852  1.1  christos   if (observer_debug)
    853  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_breakpoint_created() called\n");
    854  1.1  christos   generic_observer_notify (breakpoint_created_subject, &args);
    855  1.1  christos }
    856  1.1  christos 
    857  1.1  christos /* breakpoint_deleted notifications.  */
    858  1.1  christos 
    859  1.1  christos static struct observer_list *breakpoint_deleted_subject = NULL;
    860  1.1  christos 
    861  1.2  christos struct breakpoint_deleted_args { struct breakpoint *b; };
    862  1.1  christos 
    863  1.1  christos static void
    864  1.1  christos observer_breakpoint_deleted_notification_stub (const void *data, const void *args_data)
    865  1.1  christos {
    866  1.1  christos   observer_breakpoint_deleted_ftype *notify = (observer_breakpoint_deleted_ftype *) data;
    867  1.5       mrg   const struct breakpoint_deleted_args *args = (const struct breakpoint_deleted_args *) args_data;
    868  1.2  christos   notify (args->b);
    869  1.1  christos }
    870  1.1  christos 
    871  1.1  christos struct observer *
    872  1.1  christos observer_attach_breakpoint_deleted (observer_breakpoint_deleted_ftype *f)
    873  1.1  christos {
    874  1.1  christos   return generic_observer_attach (&breakpoint_deleted_subject,
    875  1.1  christos 				  &observer_breakpoint_deleted_notification_stub,
    876  1.1  christos 				  (void *) f);
    877  1.1  christos }
    878  1.1  christos 
    879  1.1  christos void
    880  1.1  christos observer_detach_breakpoint_deleted (struct observer *observer)
    881  1.1  christos {
    882  1.1  christos   generic_observer_detach (&breakpoint_deleted_subject, observer);
    883  1.1  christos }
    884  1.1  christos 
    885  1.1  christos void
    886  1.2  christos observer_notify_breakpoint_deleted (struct breakpoint *b)
    887  1.1  christos {
    888  1.1  christos   struct breakpoint_deleted_args args;
    889  1.2  christos   args.b = b;
    890  1.1  christos 
    891  1.1  christos   if (observer_debug)
    892  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_breakpoint_deleted() called\n");
    893  1.1  christos   generic_observer_notify (breakpoint_deleted_subject, &args);
    894  1.1  christos }
    895  1.1  christos 
    896  1.1  christos /* breakpoint_modified notifications.  */
    897  1.1  christos 
    898  1.1  christos static struct observer_list *breakpoint_modified_subject = NULL;
    899  1.1  christos 
    900  1.2  christos struct breakpoint_modified_args { struct breakpoint *b; };
    901  1.1  christos 
    902  1.1  christos static void
    903  1.1  christos observer_breakpoint_modified_notification_stub (const void *data, const void *args_data)
    904  1.1  christos {
    905  1.1  christos   observer_breakpoint_modified_ftype *notify = (observer_breakpoint_modified_ftype *) data;
    906  1.5       mrg   const struct breakpoint_modified_args *args = (const struct breakpoint_modified_args *) args_data;
    907  1.2  christos   notify (args->b);
    908  1.1  christos }
    909  1.1  christos 
    910  1.1  christos struct observer *
    911  1.1  christos observer_attach_breakpoint_modified (observer_breakpoint_modified_ftype *f)
    912  1.1  christos {
    913  1.1  christos   return generic_observer_attach (&breakpoint_modified_subject,
    914  1.1  christos 				  &observer_breakpoint_modified_notification_stub,
    915  1.1  christos 				  (void *) f);
    916  1.1  christos }
    917  1.1  christos 
    918  1.1  christos void
    919  1.1  christos observer_detach_breakpoint_modified (struct observer *observer)
    920  1.1  christos {
    921  1.1  christos   generic_observer_detach (&breakpoint_modified_subject, observer);
    922  1.1  christos }
    923  1.1  christos 
    924  1.1  christos void
    925  1.2  christos observer_notify_breakpoint_modified (struct breakpoint *b)
    926  1.1  christos {
    927  1.1  christos   struct breakpoint_modified_args args;
    928  1.2  christos   args.b = b;
    929  1.1  christos 
    930  1.1  christos   if (observer_debug)
    931  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_breakpoint_modified() called\n");
    932  1.1  christos   generic_observer_notify (breakpoint_modified_subject, &args);
    933  1.1  christos }
    934  1.1  christos 
    935  1.2  christos /* traceframe_changed notifications.  */
    936  1.1  christos 
    937  1.2  christos static struct observer_list *traceframe_changed_subject = NULL;
    938  1.1  christos 
    939  1.2  christos struct traceframe_changed_args { int tfnum; int tpnum; };
    940  1.1  christos 
    941  1.1  christos static void
    942  1.2  christos observer_traceframe_changed_notification_stub (const void *data, const void *args_data)
    943  1.1  christos {
    944  1.2  christos   observer_traceframe_changed_ftype *notify = (observer_traceframe_changed_ftype *) data;
    945  1.5       mrg   const struct traceframe_changed_args *args = (const struct traceframe_changed_args *) args_data;
    946  1.2  christos   notify (args->tfnum, args->tpnum);
    947  1.1  christos }
    948  1.1  christos 
    949  1.1  christos struct observer *
    950  1.2  christos observer_attach_traceframe_changed (observer_traceframe_changed_ftype *f)
    951  1.1  christos {
    952  1.2  christos   return generic_observer_attach (&traceframe_changed_subject,
    953  1.2  christos 				  &observer_traceframe_changed_notification_stub,
    954  1.1  christos 				  (void *) f);
    955  1.1  christos }
    956  1.1  christos 
    957  1.1  christos void
    958  1.2  christos observer_detach_traceframe_changed (struct observer *observer)
    959  1.1  christos {
    960  1.2  christos   generic_observer_detach (&traceframe_changed_subject, observer);
    961  1.1  christos }
    962  1.1  christos 
    963  1.1  christos void
    964  1.2  christos observer_notify_traceframe_changed (int tfnum, int tpnum)
    965  1.1  christos {
    966  1.2  christos   struct traceframe_changed_args args;
    967  1.2  christos   args.tfnum = tfnum, args.tpnum = tpnum;
    968  1.1  christos 
    969  1.1  christos   if (observer_debug)
    970  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_traceframe_changed() called\n");
    971  1.2  christos   generic_observer_notify (traceframe_changed_subject, &args);
    972  1.1  christos }
    973  1.1  christos 
    974  1.1  christos /* architecture_changed notifications.  */
    975  1.1  christos 
    976  1.1  christos static struct observer_list *architecture_changed_subject = NULL;
    977  1.1  christos 
    978  1.1  christos struct architecture_changed_args { struct gdbarch *newarch; };
    979  1.1  christos 
    980  1.1  christos static void
    981  1.1  christos observer_architecture_changed_notification_stub (const void *data, const void *args_data)
    982  1.1  christos {
    983  1.1  christos   observer_architecture_changed_ftype *notify = (observer_architecture_changed_ftype *) data;
    984  1.5       mrg   const struct architecture_changed_args *args = (const struct architecture_changed_args *) args_data;
    985  1.1  christos   notify (args->newarch);
    986  1.1  christos }
    987  1.1  christos 
    988  1.1  christos struct observer *
    989  1.1  christos observer_attach_architecture_changed (observer_architecture_changed_ftype *f)
    990  1.1  christos {
    991  1.1  christos   return generic_observer_attach (&architecture_changed_subject,
    992  1.1  christos 				  &observer_architecture_changed_notification_stub,
    993  1.1  christos 				  (void *) f);
    994  1.1  christos }
    995  1.1  christos 
    996  1.1  christos void
    997  1.1  christos observer_detach_architecture_changed (struct observer *observer)
    998  1.1  christos {
    999  1.1  christos   generic_observer_detach (&architecture_changed_subject, observer);
   1000  1.1  christos }
   1001  1.1  christos 
   1002  1.1  christos void
   1003  1.1  christos observer_notify_architecture_changed (struct gdbarch *newarch)
   1004  1.1  christos {
   1005  1.1  christos   struct architecture_changed_args args;
   1006  1.1  christos   args.newarch = newarch;
   1007  1.1  christos 
   1008  1.1  christos   if (observer_debug)
   1009  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_architecture_changed() called\n");
   1010  1.1  christos   generic_observer_notify (architecture_changed_subject, &args);
   1011  1.1  christos }
   1012  1.1  christos 
   1013  1.1  christos /* thread_ptid_changed notifications.  */
   1014  1.1  christos 
   1015  1.1  christos static struct observer_list *thread_ptid_changed_subject = NULL;
   1016  1.1  christos 
   1017  1.1  christos struct thread_ptid_changed_args { ptid_t old_ptid; ptid_t new_ptid; };
   1018  1.1  christos 
   1019  1.1  christos static void
   1020  1.1  christos observer_thread_ptid_changed_notification_stub (const void *data, const void *args_data)
   1021  1.1  christos {
   1022  1.1  christos   observer_thread_ptid_changed_ftype *notify = (observer_thread_ptid_changed_ftype *) data;
   1023  1.5       mrg   const struct thread_ptid_changed_args *args = (const struct thread_ptid_changed_args *) args_data;
   1024  1.1  christos   notify (args->old_ptid, args->new_ptid);
   1025  1.1  christos }
   1026  1.1  christos 
   1027  1.1  christos struct observer *
   1028  1.1  christos observer_attach_thread_ptid_changed (observer_thread_ptid_changed_ftype *f)
   1029  1.1  christos {
   1030  1.1  christos   return generic_observer_attach (&thread_ptid_changed_subject,
   1031  1.1  christos 				  &observer_thread_ptid_changed_notification_stub,
   1032  1.1  christos 				  (void *) f);
   1033  1.1  christos }
   1034  1.1  christos 
   1035  1.1  christos void
   1036  1.1  christos observer_detach_thread_ptid_changed (struct observer *observer)
   1037  1.1  christos {
   1038  1.1  christos   generic_observer_detach (&thread_ptid_changed_subject, observer);
   1039  1.1  christos }
   1040  1.1  christos 
   1041  1.1  christos void
   1042  1.1  christos observer_notify_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid)
   1043  1.1  christos {
   1044  1.1  christos   struct thread_ptid_changed_args args;
   1045  1.1  christos   args.old_ptid = old_ptid, args.new_ptid = new_ptid;
   1046  1.1  christos 
   1047  1.1  christos   if (observer_debug)
   1048  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_thread_ptid_changed() called\n");
   1049  1.1  christos   generic_observer_notify (thread_ptid_changed_subject, &args);
   1050  1.1  christos }
   1051  1.1  christos 
   1052  1.1  christos /* inferior_added notifications.  */
   1053  1.1  christos 
   1054  1.1  christos static struct observer_list *inferior_added_subject = NULL;
   1055  1.1  christos 
   1056  1.1  christos struct inferior_added_args { struct inferior *inf; };
   1057  1.1  christos 
   1058  1.1  christos static void
   1059  1.1  christos observer_inferior_added_notification_stub (const void *data, const void *args_data)
   1060  1.1  christos {
   1061  1.1  christos   observer_inferior_added_ftype *notify = (observer_inferior_added_ftype *) data;
   1062  1.5       mrg   const struct inferior_added_args *args = (const struct inferior_added_args *) args_data;
   1063  1.1  christos   notify (args->inf);
   1064  1.1  christos }
   1065  1.1  christos 
   1066  1.1  christos struct observer *
   1067  1.1  christos observer_attach_inferior_added (observer_inferior_added_ftype *f)
   1068  1.1  christos {
   1069  1.1  christos   return generic_observer_attach (&inferior_added_subject,
   1070  1.1  christos 				  &observer_inferior_added_notification_stub,
   1071  1.1  christos 				  (void *) f);
   1072  1.1  christos }
   1073  1.1  christos 
   1074  1.1  christos void
   1075  1.1  christos observer_detach_inferior_added (struct observer *observer)
   1076  1.1  christos {
   1077  1.1  christos   generic_observer_detach (&inferior_added_subject, observer);
   1078  1.1  christos }
   1079  1.1  christos 
   1080  1.1  christos void
   1081  1.1  christos observer_notify_inferior_added (struct inferior *inf)
   1082  1.1  christos {
   1083  1.1  christos   struct inferior_added_args args;
   1084  1.1  christos   args.inf = inf;
   1085  1.1  christos 
   1086  1.1  christos   if (observer_debug)
   1087  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_added() called\n");
   1088  1.1  christos   generic_observer_notify (inferior_added_subject, &args);
   1089  1.1  christos }
   1090  1.1  christos 
   1091  1.1  christos /* inferior_appeared notifications.  */
   1092  1.1  christos 
   1093  1.1  christos static struct observer_list *inferior_appeared_subject = NULL;
   1094  1.1  christos 
   1095  1.1  christos struct inferior_appeared_args { struct inferior *inf; };
   1096  1.1  christos 
   1097  1.1  christos static void
   1098  1.1  christos observer_inferior_appeared_notification_stub (const void *data, const void *args_data)
   1099  1.1  christos {
   1100  1.1  christos   observer_inferior_appeared_ftype *notify = (observer_inferior_appeared_ftype *) data;
   1101  1.5       mrg   const struct inferior_appeared_args *args = (const struct inferior_appeared_args *) args_data;
   1102  1.1  christos   notify (args->inf);
   1103  1.1  christos }
   1104  1.1  christos 
   1105  1.1  christos struct observer *
   1106  1.1  christos observer_attach_inferior_appeared (observer_inferior_appeared_ftype *f)
   1107  1.1  christos {
   1108  1.1  christos   return generic_observer_attach (&inferior_appeared_subject,
   1109  1.1  christos 				  &observer_inferior_appeared_notification_stub,
   1110  1.1  christos 				  (void *) f);
   1111  1.1  christos }
   1112  1.1  christos 
   1113  1.1  christos void
   1114  1.1  christos observer_detach_inferior_appeared (struct observer *observer)
   1115  1.1  christos {
   1116  1.1  christos   generic_observer_detach (&inferior_appeared_subject, observer);
   1117  1.1  christos }
   1118  1.1  christos 
   1119  1.1  christos void
   1120  1.1  christos observer_notify_inferior_appeared (struct inferior *inf)
   1121  1.1  christos {
   1122  1.1  christos   struct inferior_appeared_args args;
   1123  1.1  christos   args.inf = inf;
   1124  1.1  christos 
   1125  1.1  christos   if (observer_debug)
   1126  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_appeared() called\n");
   1127  1.1  christos   generic_observer_notify (inferior_appeared_subject, &args);
   1128  1.1  christos }
   1129  1.1  christos 
   1130  1.1  christos /* inferior_exit notifications.  */
   1131  1.1  christos 
   1132  1.1  christos static struct observer_list *inferior_exit_subject = NULL;
   1133  1.1  christos 
   1134  1.1  christos struct inferior_exit_args { struct inferior *inf; };
   1135  1.1  christos 
   1136  1.1  christos static void
   1137  1.1  christos observer_inferior_exit_notification_stub (const void *data, const void *args_data)
   1138  1.1  christos {
   1139  1.1  christos   observer_inferior_exit_ftype *notify = (observer_inferior_exit_ftype *) data;
   1140  1.5       mrg   const struct inferior_exit_args *args = (const struct inferior_exit_args *) args_data;
   1141  1.1  christos   notify (args->inf);
   1142  1.1  christos }
   1143  1.1  christos 
   1144  1.1  christos struct observer *
   1145  1.1  christos observer_attach_inferior_exit (observer_inferior_exit_ftype *f)
   1146  1.1  christos {
   1147  1.1  christos   return generic_observer_attach (&inferior_exit_subject,
   1148  1.1  christos 				  &observer_inferior_exit_notification_stub,
   1149  1.1  christos 				  (void *) f);
   1150  1.1  christos }
   1151  1.1  christos 
   1152  1.1  christos void
   1153  1.1  christos observer_detach_inferior_exit (struct observer *observer)
   1154  1.1  christos {
   1155  1.1  christos   generic_observer_detach (&inferior_exit_subject, observer);
   1156  1.1  christos }
   1157  1.1  christos 
   1158  1.1  christos void
   1159  1.1  christos observer_notify_inferior_exit (struct inferior *inf)
   1160  1.1  christos {
   1161  1.1  christos   struct inferior_exit_args args;
   1162  1.1  christos   args.inf = inf;
   1163  1.1  christos 
   1164  1.1  christos   if (observer_debug)
   1165  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_exit() called\n");
   1166  1.1  christos   generic_observer_notify (inferior_exit_subject, &args);
   1167  1.1  christos }
   1168  1.1  christos 
   1169  1.1  christos /* inferior_removed notifications.  */
   1170  1.1  christos 
   1171  1.1  christos static struct observer_list *inferior_removed_subject = NULL;
   1172  1.1  christos 
   1173  1.1  christos struct inferior_removed_args { struct inferior *inf; };
   1174  1.1  christos 
   1175  1.1  christos static void
   1176  1.1  christos observer_inferior_removed_notification_stub (const void *data, const void *args_data)
   1177  1.1  christos {
   1178  1.1  christos   observer_inferior_removed_ftype *notify = (observer_inferior_removed_ftype *) data;
   1179  1.5       mrg   const struct inferior_removed_args *args = (const struct inferior_removed_args *) args_data;
   1180  1.1  christos   notify (args->inf);
   1181  1.1  christos }
   1182  1.1  christos 
   1183  1.1  christos struct observer *
   1184  1.1  christos observer_attach_inferior_removed (observer_inferior_removed_ftype *f)
   1185  1.1  christos {
   1186  1.1  christos   return generic_observer_attach (&inferior_removed_subject,
   1187  1.1  christos 				  &observer_inferior_removed_notification_stub,
   1188  1.1  christos 				  (void *) f);
   1189  1.1  christos }
   1190  1.1  christos 
   1191  1.1  christos void
   1192  1.1  christos observer_detach_inferior_removed (struct observer *observer)
   1193  1.1  christos {
   1194  1.1  christos   generic_observer_detach (&inferior_removed_subject, observer);
   1195  1.1  christos }
   1196  1.1  christos 
   1197  1.1  christos void
   1198  1.1  christos observer_notify_inferior_removed (struct inferior *inf)
   1199  1.1  christos {
   1200  1.1  christos   struct inferior_removed_args args;
   1201  1.1  christos   args.inf = inf;
   1202  1.1  christos 
   1203  1.1  christos   if (observer_debug)
   1204  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_removed() called\n");
   1205  1.1  christos   generic_observer_notify (inferior_removed_subject, &args);
   1206  1.1  christos }
   1207  1.1  christos 
   1208  1.1  christos /* memory_changed notifications.  */
   1209  1.1  christos 
   1210  1.1  christos static struct observer_list *memory_changed_subject = NULL;
   1211  1.1  christos 
   1212  1.2  christos struct memory_changed_args { struct inferior *inferior; CORE_ADDR addr; ssize_t len; const bfd_byte *data; };
   1213  1.1  christos 
   1214  1.1  christos static void
   1215  1.1  christos observer_memory_changed_notification_stub (const void *data, const void *args_data)
   1216  1.1  christos {
   1217  1.1  christos   observer_memory_changed_ftype *notify = (observer_memory_changed_ftype *) data;
   1218  1.5       mrg   const struct memory_changed_args *args = (const struct memory_changed_args *) args_data;
   1219  1.2  christos   notify (args->inferior, args->addr, args->len, args->data);
   1220  1.1  christos }
   1221  1.1  christos 
   1222  1.1  christos struct observer *
   1223  1.1  christos observer_attach_memory_changed (observer_memory_changed_ftype *f)
   1224  1.1  christos {
   1225  1.1  christos   return generic_observer_attach (&memory_changed_subject,
   1226  1.1  christos 				  &observer_memory_changed_notification_stub,
   1227  1.1  christos 				  (void *) f);
   1228  1.1  christos }
   1229  1.1  christos 
   1230  1.1  christos void
   1231  1.1  christos observer_detach_memory_changed (struct observer *observer)
   1232  1.1  christos {
   1233  1.1  christos   generic_observer_detach (&memory_changed_subject, observer);
   1234  1.1  christos }
   1235  1.1  christos 
   1236  1.1  christos void
   1237  1.2  christos observer_notify_memory_changed (struct inferior *inferior, CORE_ADDR addr, ssize_t len, const bfd_byte *data)
   1238  1.1  christos {
   1239  1.1  christos   struct memory_changed_args args;
   1240  1.2  christos   args.inferior = inferior, args.addr = addr, args.len = len, args.data = data;
   1241  1.1  christos 
   1242  1.1  christos   if (observer_debug)
   1243  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_memory_changed() called\n");
   1244  1.1  christos   generic_observer_notify (memory_changed_subject, &args);
   1245  1.1  christos }
   1246  1.1  christos 
   1247  1.2  christos /* before_prompt notifications.  */
   1248  1.2  christos 
   1249  1.2  christos static struct observer_list *before_prompt_subject = NULL;
   1250  1.2  christos 
   1251  1.2  christos struct before_prompt_args { const char *current_prompt; };
   1252  1.2  christos 
   1253  1.2  christos static void
   1254  1.2  christos observer_before_prompt_notification_stub (const void *data, const void *args_data)
   1255  1.2  christos {
   1256  1.2  christos   observer_before_prompt_ftype *notify = (observer_before_prompt_ftype *) data;
   1257  1.5       mrg   const struct before_prompt_args *args = (const struct before_prompt_args *) args_data;
   1258  1.2  christos   notify (args->current_prompt);
   1259  1.2  christos }
   1260  1.2  christos 
   1261  1.2  christos struct observer *
   1262  1.2  christos observer_attach_before_prompt (observer_before_prompt_ftype *f)
   1263  1.2  christos {
   1264  1.2  christos   return generic_observer_attach (&before_prompt_subject,
   1265  1.2  christos 				  &observer_before_prompt_notification_stub,
   1266  1.2  christos 				  (void *) f);
   1267  1.2  christos }
   1268  1.2  christos 
   1269  1.2  christos void
   1270  1.2  christos observer_detach_before_prompt (struct observer *observer)
   1271  1.2  christos {
   1272  1.2  christos   generic_observer_detach (&before_prompt_subject, observer);
   1273  1.2  christos }
   1274  1.2  christos 
   1275  1.2  christos void
   1276  1.2  christos observer_notify_before_prompt (const char *current_prompt)
   1277  1.2  christos {
   1278  1.2  christos   struct before_prompt_args args;
   1279  1.2  christos   args.current_prompt = current_prompt;
   1280  1.2  christos 
   1281  1.2  christos   if (observer_debug)
   1282  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_before_prompt() called\n");
   1283  1.2  christos   generic_observer_notify (before_prompt_subject, &args);
   1284  1.2  christos }
   1285  1.2  christos 
   1286  1.2  christos /* gdb_datadir_changed notifications.  */
   1287  1.2  christos 
   1288  1.2  christos static struct observer_list *gdb_datadir_changed_subject = NULL;
   1289  1.2  christos 
   1290  1.2  christos static void
   1291  1.2  christos observer_gdb_datadir_changed_notification_stub (const void *data, const void *args_data)
   1292  1.2  christos {
   1293  1.2  christos   observer_gdb_datadir_changed_ftype *notify = (observer_gdb_datadir_changed_ftype *) data;
   1294  1.2  christos   notify ();
   1295  1.2  christos }
   1296  1.2  christos 
   1297  1.2  christos struct observer *
   1298  1.2  christos observer_attach_gdb_datadir_changed (observer_gdb_datadir_changed_ftype *f)
   1299  1.2  christos {
   1300  1.2  christos   return generic_observer_attach (&gdb_datadir_changed_subject,
   1301  1.2  christos 				  &observer_gdb_datadir_changed_notification_stub,
   1302  1.2  christos 				  (void *) f);
   1303  1.2  christos }
   1304  1.2  christos 
   1305  1.2  christos void
   1306  1.2  christos observer_detach_gdb_datadir_changed (struct observer *observer)
   1307  1.2  christos {
   1308  1.2  christos   generic_observer_detach (&gdb_datadir_changed_subject, observer);
   1309  1.2  christos }
   1310  1.2  christos 
   1311  1.2  christos void
   1312  1.2  christos observer_notify_gdb_datadir_changed (void)
   1313  1.2  christos {
   1314  1.2  christos char *args = NULL;
   1315  1.2  christos   if (observer_debug)
   1316  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_gdb_datadir_changed() called\n");
   1317  1.2  christos   generic_observer_notify (gdb_datadir_changed_subject, &args);
   1318  1.2  christos }
   1319  1.2  christos 
   1320  1.2  christos /* command_param_changed notifications.  */
   1321  1.2  christos 
   1322  1.2  christos static struct observer_list *command_param_changed_subject = NULL;
   1323  1.2  christos 
   1324  1.2  christos struct command_param_changed_args { const char *param; const char *value; };
   1325  1.2  christos 
   1326  1.2  christos static void
   1327  1.2  christos observer_command_param_changed_notification_stub (const void *data, const void *args_data)
   1328  1.2  christos {
   1329  1.2  christos   observer_command_param_changed_ftype *notify = (observer_command_param_changed_ftype *) data;
   1330  1.5       mrg   const struct command_param_changed_args *args = (const struct command_param_changed_args *) args_data;
   1331  1.2  christos   notify (args->param, args->value);
   1332  1.2  christos }
   1333  1.2  christos 
   1334  1.2  christos struct observer *
   1335  1.2  christos observer_attach_command_param_changed (observer_command_param_changed_ftype *f)
   1336  1.2  christos {
   1337  1.2  christos   return generic_observer_attach (&command_param_changed_subject,
   1338  1.2  christos 				  &observer_command_param_changed_notification_stub,
   1339  1.2  christos 				  (void *) f);
   1340  1.2  christos }
   1341  1.2  christos 
   1342  1.2  christos void
   1343  1.2  christos observer_detach_command_param_changed (struct observer *observer)
   1344  1.2  christos {
   1345  1.2  christos   generic_observer_detach (&command_param_changed_subject, observer);
   1346  1.2  christos }
   1347  1.2  christos 
   1348  1.2  christos void
   1349  1.2  christos observer_notify_command_param_changed (const char *param, const char *value)
   1350  1.2  christos {
   1351  1.2  christos   struct command_param_changed_args args;
   1352  1.2  christos   args.param = param, args.value = value;
   1353  1.2  christos 
   1354  1.2  christos   if (observer_debug)
   1355  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_command_param_changed() called\n");
   1356  1.2  christos   generic_observer_notify (command_param_changed_subject, &args);
   1357  1.2  christos }
   1358  1.2  christos 
   1359  1.2  christos /* tsv_created notifications.  */
   1360  1.2  christos 
   1361  1.2  christos static struct observer_list *tsv_created_subject = NULL;
   1362  1.2  christos 
   1363  1.2  christos struct tsv_created_args { const struct trace_state_variable *tsv; };
   1364  1.2  christos 
   1365  1.2  christos static void
   1366  1.2  christos observer_tsv_created_notification_stub (const void *data, const void *args_data)
   1367  1.2  christos {
   1368  1.2  christos   observer_tsv_created_ftype *notify = (observer_tsv_created_ftype *) data;
   1369  1.5       mrg   const struct tsv_created_args *args = (const struct tsv_created_args *) args_data;
   1370  1.2  christos   notify (args->tsv);
   1371  1.2  christos }
   1372  1.2  christos 
   1373  1.2  christos struct observer *
   1374  1.2  christos observer_attach_tsv_created (observer_tsv_created_ftype *f)
   1375  1.2  christos {
   1376  1.2  christos   return generic_observer_attach (&tsv_created_subject,
   1377  1.2  christos 				  &observer_tsv_created_notification_stub,
   1378  1.2  christos 				  (void *) f);
   1379  1.2  christos }
   1380  1.2  christos 
   1381  1.2  christos void
   1382  1.2  christos observer_detach_tsv_created (struct observer *observer)
   1383  1.2  christos {
   1384  1.2  christos   generic_observer_detach (&tsv_created_subject, observer);
   1385  1.2  christos }
   1386  1.2  christos 
   1387  1.2  christos void
   1388  1.2  christos observer_notify_tsv_created (const struct trace_state_variable *tsv)
   1389  1.2  christos {
   1390  1.2  christos   struct tsv_created_args args;
   1391  1.2  christos   args.tsv = tsv;
   1392  1.2  christos 
   1393  1.2  christos   if (observer_debug)
   1394  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_tsv_created() called\n");
   1395  1.2  christos   generic_observer_notify (tsv_created_subject, &args);
   1396  1.2  christos }
   1397  1.2  christos 
   1398  1.2  christos /* tsv_deleted notifications.  */
   1399  1.2  christos 
   1400  1.2  christos static struct observer_list *tsv_deleted_subject = NULL;
   1401  1.2  christos 
   1402  1.2  christos struct tsv_deleted_args { const struct trace_state_variable *tsv; };
   1403  1.2  christos 
   1404  1.2  christos static void
   1405  1.2  christos observer_tsv_deleted_notification_stub (const void *data, const void *args_data)
   1406  1.2  christos {
   1407  1.2  christos   observer_tsv_deleted_ftype *notify = (observer_tsv_deleted_ftype *) data;
   1408  1.5       mrg   const struct tsv_deleted_args *args = (const struct tsv_deleted_args *) args_data;
   1409  1.2  christos   notify (args->tsv);
   1410  1.2  christos }
   1411  1.2  christos 
   1412  1.2  christos struct observer *
   1413  1.2  christos observer_attach_tsv_deleted (observer_tsv_deleted_ftype *f)
   1414  1.2  christos {
   1415  1.2  christos   return generic_observer_attach (&tsv_deleted_subject,
   1416  1.2  christos 				  &observer_tsv_deleted_notification_stub,
   1417  1.2  christos 				  (void *) f);
   1418  1.2  christos }
   1419  1.2  christos 
   1420  1.2  christos void
   1421  1.2  christos observer_detach_tsv_deleted (struct observer *observer)
   1422  1.2  christos {
   1423  1.2  christos   generic_observer_detach (&tsv_deleted_subject, observer);
   1424  1.2  christos }
   1425  1.2  christos 
   1426  1.2  christos void
   1427  1.2  christos observer_notify_tsv_deleted (const struct trace_state_variable *tsv)
   1428  1.2  christos {
   1429  1.2  christos   struct tsv_deleted_args args;
   1430  1.2  christos   args.tsv = tsv;
   1431  1.2  christos 
   1432  1.2  christos   if (observer_debug)
   1433  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_tsv_deleted() called\n");
   1434  1.2  christos   generic_observer_notify (tsv_deleted_subject, &args);
   1435  1.2  christos }
   1436  1.2  christos 
   1437  1.2  christos /* tsv_modified notifications.  */
   1438  1.2  christos 
   1439  1.2  christos static struct observer_list *tsv_modified_subject = NULL;
   1440  1.2  christos 
   1441  1.2  christos struct tsv_modified_args { const struct trace_state_variable *tsv; };
   1442  1.2  christos 
   1443  1.2  christos static void
   1444  1.2  christos observer_tsv_modified_notification_stub (const void *data, const void *args_data)
   1445  1.2  christos {
   1446  1.2  christos   observer_tsv_modified_ftype *notify = (observer_tsv_modified_ftype *) data;
   1447  1.5       mrg   const struct tsv_modified_args *args = (const struct tsv_modified_args *) args_data;
   1448  1.2  christos   notify (args->tsv);
   1449  1.2  christos }
   1450  1.2  christos 
   1451  1.2  christos struct observer *
   1452  1.2  christos observer_attach_tsv_modified (observer_tsv_modified_ftype *f)
   1453  1.2  christos {
   1454  1.2  christos   return generic_observer_attach (&tsv_modified_subject,
   1455  1.2  christos 				  &observer_tsv_modified_notification_stub,
   1456  1.2  christos 				  (void *) f);
   1457  1.2  christos }
   1458  1.2  christos 
   1459  1.2  christos void
   1460  1.2  christos observer_detach_tsv_modified (struct observer *observer)
   1461  1.2  christos {
   1462  1.2  christos   generic_observer_detach (&tsv_modified_subject, observer);
   1463  1.2  christos }
   1464  1.2  christos 
   1465  1.2  christos void
   1466  1.2  christos observer_notify_tsv_modified (const struct trace_state_variable *tsv)
   1467  1.2  christos {
   1468  1.2  christos   struct tsv_modified_args args;
   1469  1.2  christos   args.tsv = tsv;
   1470  1.2  christos 
   1471  1.2  christos   if (observer_debug)
   1472  1.2  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_tsv_modified() called\n");
   1473  1.2  christos   generic_observer_notify (tsv_modified_subject, &args);
   1474  1.2  christos }
   1475  1.2  christos 
   1476  1.4  christos /* inferior_call_pre notifications.  */
   1477  1.4  christos 
   1478  1.4  christos static struct observer_list *inferior_call_pre_subject = NULL;
   1479  1.4  christos 
   1480  1.4  christos struct inferior_call_pre_args { ptid_t thread; CORE_ADDR address; };
   1481  1.4  christos 
   1482  1.4  christos static void
   1483  1.4  christos observer_inferior_call_pre_notification_stub (const void *data, const void *args_data)
   1484  1.4  christos {
   1485  1.4  christos   observer_inferior_call_pre_ftype *notify = (observer_inferior_call_pre_ftype *) data;
   1486  1.5       mrg   const struct inferior_call_pre_args *args = (const struct inferior_call_pre_args *) args_data;
   1487  1.4  christos   notify (args->thread, args->address);
   1488  1.4  christos }
   1489  1.4  christos 
   1490  1.4  christos struct observer *
   1491  1.4  christos observer_attach_inferior_call_pre (observer_inferior_call_pre_ftype *f)
   1492  1.4  christos {
   1493  1.4  christos   return generic_observer_attach (&inferior_call_pre_subject,
   1494  1.4  christos 				  &observer_inferior_call_pre_notification_stub,
   1495  1.4  christos 				  (void *) f);
   1496  1.4  christos }
   1497  1.4  christos 
   1498  1.4  christos void
   1499  1.4  christos observer_detach_inferior_call_pre (struct observer *observer)
   1500  1.4  christos {
   1501  1.4  christos   generic_observer_detach (&inferior_call_pre_subject, observer);
   1502  1.4  christos }
   1503  1.4  christos 
   1504  1.4  christos void
   1505  1.4  christos observer_notify_inferior_call_pre (ptid_t thread, CORE_ADDR address)
   1506  1.4  christos {
   1507  1.4  christos   struct inferior_call_pre_args args;
   1508  1.4  christos   args.thread = thread, args.address = address;
   1509  1.4  christos 
   1510  1.4  christos   if (observer_debug)
   1511  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_call_pre() called\n");
   1512  1.4  christos   generic_observer_notify (inferior_call_pre_subject, &args);
   1513  1.4  christos }
   1514  1.4  christos 
   1515  1.4  christos /* inferior_call_post notifications.  */
   1516  1.4  christos 
   1517  1.4  christos static struct observer_list *inferior_call_post_subject = NULL;
   1518  1.4  christos 
   1519  1.4  christos struct inferior_call_post_args { ptid_t thread; CORE_ADDR address; };
   1520  1.4  christos 
   1521  1.4  christos static void
   1522  1.4  christos observer_inferior_call_post_notification_stub (const void *data, const void *args_data)
   1523  1.4  christos {
   1524  1.4  christos   observer_inferior_call_post_ftype *notify = (observer_inferior_call_post_ftype *) data;
   1525  1.5       mrg   const struct inferior_call_post_args *args = (const struct inferior_call_post_args *) args_data;
   1526  1.4  christos   notify (args->thread, args->address);
   1527  1.4  christos }
   1528  1.4  christos 
   1529  1.4  christos struct observer *
   1530  1.4  christos observer_attach_inferior_call_post (observer_inferior_call_post_ftype *f)
   1531  1.4  christos {
   1532  1.4  christos   return generic_observer_attach (&inferior_call_post_subject,
   1533  1.4  christos 				  &observer_inferior_call_post_notification_stub,
   1534  1.4  christos 				  (void *) f);
   1535  1.4  christos }
   1536  1.4  christos 
   1537  1.4  christos void
   1538  1.4  christos observer_detach_inferior_call_post (struct observer *observer)
   1539  1.4  christos {
   1540  1.4  christos   generic_observer_detach (&inferior_call_post_subject, observer);
   1541  1.4  christos }
   1542  1.4  christos 
   1543  1.4  christos void
   1544  1.4  christos observer_notify_inferior_call_post (ptid_t thread, CORE_ADDR address)
   1545  1.4  christos {
   1546  1.4  christos   struct inferior_call_post_args args;
   1547  1.4  christos   args.thread = thread, args.address = address;
   1548  1.4  christos 
   1549  1.4  christos   if (observer_debug)
   1550  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_inferior_call_post() called\n");
   1551  1.4  christos   generic_observer_notify (inferior_call_post_subject, &args);
   1552  1.4  christos }
   1553  1.4  christos 
   1554  1.4  christos /* register_changed notifications.  */
   1555  1.4  christos 
   1556  1.4  christos static struct observer_list *register_changed_subject = NULL;
   1557  1.4  christos 
   1558  1.4  christos struct register_changed_args { struct frame_info *frame; int regnum; };
   1559  1.4  christos 
   1560  1.4  christos static void
   1561  1.4  christos observer_register_changed_notification_stub (const void *data, const void *args_data)
   1562  1.4  christos {
   1563  1.4  christos   observer_register_changed_ftype *notify = (observer_register_changed_ftype *) data;
   1564  1.5       mrg   const struct register_changed_args *args = (const struct register_changed_args *) args_data;
   1565  1.4  christos   notify (args->frame, args->regnum);
   1566  1.4  christos }
   1567  1.4  christos 
   1568  1.4  christos struct observer *
   1569  1.4  christos observer_attach_register_changed (observer_register_changed_ftype *f)
   1570  1.4  christos {
   1571  1.4  christos   return generic_observer_attach (&register_changed_subject,
   1572  1.4  christos 				  &observer_register_changed_notification_stub,
   1573  1.4  christos 				  (void *) f);
   1574  1.4  christos }
   1575  1.4  christos 
   1576  1.4  christos void
   1577  1.4  christos observer_detach_register_changed (struct observer *observer)
   1578  1.4  christos {
   1579  1.4  christos   generic_observer_detach (&register_changed_subject, observer);
   1580  1.4  christos }
   1581  1.4  christos 
   1582  1.4  christos void
   1583  1.4  christos observer_notify_register_changed (struct frame_info *frame, int regnum)
   1584  1.4  christos {
   1585  1.4  christos   struct register_changed_args args;
   1586  1.4  christos   args.frame = frame, args.regnum = regnum;
   1587  1.4  christos 
   1588  1.4  christos   if (observer_debug)
   1589  1.4  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_register_changed() called\n");
   1590  1.4  christos   generic_observer_notify (register_changed_subject, &args);
   1591  1.4  christos }
   1592  1.4  christos 
   1593  1.1  christos /* test_notification notifications.  */
   1594  1.1  christos 
   1595  1.1  christos static struct observer_list *test_notification_subject = NULL;
   1596  1.1  christos 
   1597  1.1  christos struct test_notification_args { int somearg; };
   1598  1.1  christos 
   1599  1.1  christos static void
   1600  1.1  christos observer_test_notification_notification_stub (const void *data, const void *args_data)
   1601  1.1  christos {
   1602  1.1  christos   observer_test_notification_ftype *notify = (observer_test_notification_ftype *) data;
   1603  1.5       mrg   const struct test_notification_args *args = (const struct test_notification_args *) args_data;
   1604  1.1  christos   notify (args->somearg);
   1605  1.1  christos }
   1606  1.1  christos 
   1607  1.1  christos struct observer *
   1608  1.1  christos observer_attach_test_notification (observer_test_notification_ftype *f)
   1609  1.1  christos {
   1610  1.1  christos   return generic_observer_attach (&test_notification_subject,
   1611  1.1  christos 				  &observer_test_notification_notification_stub,
   1612  1.1  christos 				  (void *) f);
   1613  1.1  christos }
   1614  1.1  christos 
   1615  1.1  christos void
   1616  1.1  christos observer_detach_test_notification (struct observer *observer)
   1617  1.1  christos {
   1618  1.1  christos   generic_observer_detach (&test_notification_subject, observer);
   1619  1.1  christos }
   1620  1.1  christos 
   1621  1.1  christos void
   1622  1.1  christos observer_notify_test_notification (int somearg)
   1623  1.1  christos {
   1624  1.1  christos   struct test_notification_args args;
   1625  1.1  christos   args.somearg = somearg;
   1626  1.1  christos 
   1627  1.1  christos   if (observer_debug)
   1628  1.1  christos     fprintf_unfiltered (gdb_stdlog, "observer_notify_test_notification() called\n");
   1629  1.1  christos   generic_observer_notify (test_notification_subject, &args);
   1630  1.1  christos }
   1631  1.5       mrg 
   1632  1.5       mrg /* user_selected_context_changed notifications.  */
   1633  1.5       mrg 
   1634  1.5       mrg static struct observer_list *user_selected_context_changed_subject = NULL;
   1635  1.5       mrg 
   1636  1.5       mrg struct user_selected_context_changed_args { user_selected_what selection; };
   1637  1.5       mrg 
   1638  1.5       mrg static void
   1639  1.5       mrg observer_user_selected_context_changed_notification_stub (const void *data, const void *args_data)
   1640  1.5       mrg {
   1641  1.5       mrg   observer_user_selected_context_changed_ftype *notify = (observer_user_selected_context_changed_ftype *) data;
   1642  1.5       mrg   const struct user_selected_context_changed_args *args = (const struct user_selected_context_changed_args *) args_data;
   1643  1.5       mrg   notify (args->selection);
   1644  1.5       mrg }
   1645  1.5       mrg 
   1646  1.5       mrg struct observer *
   1647  1.5       mrg observer_attach_user_selected_context_changed (observer_user_selected_context_changed_ftype *f)
   1648  1.5       mrg {
   1649  1.5       mrg   return generic_observer_attach (&user_selected_context_changed_subject,
   1650  1.5       mrg 				  &observer_user_selected_context_changed_notification_stub,
   1651  1.5       mrg 				  (void *) f);
   1652  1.5       mrg }
   1653  1.5       mrg 
   1654  1.5       mrg void
   1655  1.5       mrg observer_detach_user_selected_context_changed (struct observer *observer)
   1656  1.5       mrg {
   1657  1.5       mrg   generic_observer_detach (&user_selected_context_changed_subject, observer);
   1658  1.5       mrg }
   1659  1.5       mrg 
   1660  1.5       mrg void
   1661  1.5       mrg observer_notify_user_selected_context_changed (user_selected_what selection)
   1662  1.5       mrg {
   1663  1.5       mrg   struct user_selected_context_changed_args args;
   1664  1.5       mrg   args.selection = selection;
   1665  1.5       mrg 
   1666  1.5       mrg   if (observer_debug)
   1667  1.5       mrg     fprintf_unfiltered (gdb_stdlog, "observer_notify_user_selected_context_changed() called\n");
   1668  1.5       mrg   generic_observer_notify (user_selected_context_changed_subject, &args);
   1669  1.5       mrg }
   1670