xref: /netbsd-src/external/gpl3/gdb/lib/libgdb/arch/powerpc64/observer.h (revision 8b7331e524ed361bf23f656b4caa416ca7a5670f)
1da671615Schristos /* This file is automatically generated.  DO NOT EDIT! */
2*8b7331e5Schristos /* Generated from: NetBSD: mknative-gdb,v 1.7 2016/10/16 04:37:42 mrg Exp  */
3*8b7331e5Schristos /* Generated from: NetBSD: mknative.common,v 1.15 2017/11/29 03:32:28 christos Exp  */
4da671615Schristos 
5da671615Schristos /* GDB Notifications to Observers.
6da671615Schristos 
7*8b7331e5Schristos    Copyright (C) 2004-2017 Free Software Foundation, Inc.
8da671615Schristos 
9da671615Schristos    This file is part of GDB.
10da671615Schristos 
11da671615Schristos    This program is free software; you can redistribute it and/or modify
12da671615Schristos    it under the terms of the GNU General Public License as published by
13da671615Schristos    the Free Software Foundation; either version 3 of the License, or
14da671615Schristos    (at your option) any later version.
15da671615Schristos 
16da671615Schristos    This program is distributed in the hope that it will be useful,
17da671615Schristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
18da671615Schristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19da671615Schristos    GNU General Public License for more details.
20da671615Schristos 
21da671615Schristos    You should have received a copy of the GNU General Public License
22da671615Schristos    along with this program.  If not, see <http://www.gnu.org/licenses/>.
23da671615Schristos 
24da671615Schristos    --
25da671615Schristos 
26da671615Schristos    This file was generated using observer.sh and observer.texi.  */
27da671615Schristos 
28da671615Schristos #ifndef OBSERVER_H
29da671615Schristos #define OBSERVER_H
30da671615Schristos 
31da671615Schristos struct observer;
32da671615Schristos struct bpstats;
33da671615Schristos struct so_list;
34da671615Schristos struct objfile;
35da671615Schristos struct thread_info;
368bd2f7aeSchristos struct inferior;
378bd2f7aeSchristos struct trace_state_variable;
38da671615Schristos 
39da671615Schristos /* normal_stop notifications.  */
40da671615Schristos 
41da671615Schristos typedef void (observer_normal_stop_ftype) (struct bpstats *bs, int print_frame);
42da671615Schristos 
43da671615Schristos extern struct observer *observer_attach_normal_stop (observer_normal_stop_ftype *f);
44da671615Schristos extern void observer_detach_normal_stop (struct observer *observer);
45da671615Schristos extern void observer_notify_normal_stop (struct bpstats *bs, int print_frame);
46da671615Schristos 
4797d73739Schristos /* signal_received notifications.  */
4897d73739Schristos 
4997d73739Schristos typedef void (observer_signal_received_ftype) (enum gdb_signal siggnal);
5097d73739Schristos 
5197d73739Schristos extern struct observer *observer_attach_signal_received (observer_signal_received_ftype *f);
5297d73739Schristos extern void observer_detach_signal_received (struct observer *observer);
5397d73739Schristos extern void observer_notify_signal_received (enum gdb_signal siggnal);
5497d73739Schristos 
5597d73739Schristos /* end_stepping_range notifications.  */
5697d73739Schristos 
5797d73739Schristos typedef void (observer_end_stepping_range_ftype) (void);
5897d73739Schristos 
5997d73739Schristos extern struct observer *observer_attach_end_stepping_range (observer_end_stepping_range_ftype *f);
6097d73739Schristos extern void observer_detach_end_stepping_range (struct observer *observer);
6197d73739Schristos extern void observer_notify_end_stepping_range (void);
6297d73739Schristos 
6397d73739Schristos /* signal_exited notifications.  */
6497d73739Schristos 
6597d73739Schristos typedef void (observer_signal_exited_ftype) (enum gdb_signal siggnal);
6697d73739Schristos 
6797d73739Schristos extern struct observer *observer_attach_signal_exited (observer_signal_exited_ftype *f);
6897d73739Schristos extern void observer_detach_signal_exited (struct observer *observer);
6997d73739Schristos extern void observer_notify_signal_exited (enum gdb_signal siggnal);
7097d73739Schristos 
7197d73739Schristos /* exited notifications.  */
7297d73739Schristos 
7397d73739Schristos typedef void (observer_exited_ftype) (int exitstatus);
7497d73739Schristos 
7597d73739Schristos extern struct observer *observer_attach_exited (observer_exited_ftype *f);
7697d73739Schristos extern void observer_detach_exited (struct observer *observer);
7797d73739Schristos extern void observer_notify_exited (int exitstatus);
7897d73739Schristos 
7997d73739Schristos /* no_history notifications.  */
8097d73739Schristos 
8197d73739Schristos typedef void (observer_no_history_ftype) (void);
8297d73739Schristos 
8397d73739Schristos extern struct observer *observer_attach_no_history (observer_no_history_ftype *f);
8497d73739Schristos extern void observer_detach_no_history (struct observer *observer);
8597d73739Schristos extern void observer_notify_no_history (void);
8697d73739Schristos 
8797d73739Schristos /* sync_execution_done notifications.  */
8897d73739Schristos 
8997d73739Schristos typedef void (observer_sync_execution_done_ftype) (void);
9097d73739Schristos 
9197d73739Schristos extern struct observer *observer_attach_sync_execution_done (observer_sync_execution_done_ftype *f);
9297d73739Schristos extern void observer_detach_sync_execution_done (struct observer *observer);
9397d73739Schristos extern void observer_notify_sync_execution_done (void);
9497d73739Schristos 
9597d73739Schristos /* command_error notifications.  */
9697d73739Schristos 
9797d73739Schristos typedef void (observer_command_error_ftype) (void);
9897d73739Schristos 
9997d73739Schristos extern struct observer *observer_attach_command_error (observer_command_error_ftype *f);
10097d73739Schristos extern void observer_detach_command_error (struct observer *observer);
10197d73739Schristos extern void observer_notify_command_error (void);
10297d73739Schristos 
103da671615Schristos /* target_changed notifications.  */
104da671615Schristos 
105da671615Schristos typedef void (observer_target_changed_ftype) (struct target_ops *target);
106da671615Schristos 
107da671615Schristos extern struct observer *observer_attach_target_changed (observer_target_changed_ftype *f);
108da671615Schristos extern void observer_detach_target_changed (struct observer *observer);
109da671615Schristos extern void observer_notify_target_changed (struct target_ops *target);
110da671615Schristos 
111da671615Schristos /* executable_changed notifications.  */
112da671615Schristos 
113da671615Schristos typedef void (observer_executable_changed_ftype) (void);
114da671615Schristos 
115da671615Schristos extern struct observer *observer_attach_executable_changed (observer_executable_changed_ftype *f);
116da671615Schristos extern void observer_detach_executable_changed (struct observer *observer);
117da671615Schristos extern void observer_notify_executable_changed (void);
118da671615Schristos 
119da671615Schristos /* inferior_created notifications.  */
120da671615Schristos 
121da671615Schristos typedef void (observer_inferior_created_ftype) (struct target_ops *objfile, int from_tty);
122da671615Schristos 
123da671615Schristos extern struct observer *observer_attach_inferior_created (observer_inferior_created_ftype *f);
124da671615Schristos extern void observer_detach_inferior_created (struct observer *observer);
125da671615Schristos extern void observer_notify_inferior_created (struct target_ops *objfile, int from_tty);
126da671615Schristos 
1278bd2f7aeSchristos /* record_changed notifications.  */
1288bd2f7aeSchristos 
129a417a46eSchristos typedef void (observer_record_changed_ftype) (struct inferior *inferior, int started, const char *method, const char *format);
1308bd2f7aeSchristos 
1318bd2f7aeSchristos extern struct observer *observer_attach_record_changed (observer_record_changed_ftype *f);
1328bd2f7aeSchristos extern void observer_detach_record_changed (struct observer *observer);
133a417a46eSchristos extern void observer_notify_record_changed (struct inferior *inferior, int started, const char *method, const char *format);
1348bd2f7aeSchristos 
135da671615Schristos /* solib_loaded notifications.  */
136da671615Schristos 
137da671615Schristos typedef void (observer_solib_loaded_ftype) (struct so_list *solib);
138da671615Schristos 
139da671615Schristos extern struct observer *observer_attach_solib_loaded (observer_solib_loaded_ftype *f);
140da671615Schristos extern void observer_detach_solib_loaded (struct observer *observer);
141da671615Schristos extern void observer_notify_solib_loaded (struct so_list *solib);
142da671615Schristos 
143da671615Schristos /* solib_unloaded notifications.  */
144da671615Schristos 
145da671615Schristos typedef void (observer_solib_unloaded_ftype) (struct so_list *solib);
146da671615Schristos 
147da671615Schristos extern struct observer *observer_attach_solib_unloaded (observer_solib_unloaded_ftype *f);
148da671615Schristos extern void observer_detach_solib_unloaded (struct observer *observer);
149da671615Schristos extern void observer_notify_solib_unloaded (struct so_list *solib);
150da671615Schristos 
151da671615Schristos /* new_objfile notifications.  */
152da671615Schristos 
153da671615Schristos typedef void (observer_new_objfile_ftype) (struct objfile *objfile);
154da671615Schristos 
155da671615Schristos extern struct observer *observer_attach_new_objfile (observer_new_objfile_ftype *f);
156da671615Schristos extern void observer_detach_new_objfile (struct observer *observer);
157da671615Schristos extern void observer_notify_new_objfile (struct objfile *objfile);
158da671615Schristos 
15969888ff8Schristos /* free_objfile notifications.  */
16069888ff8Schristos 
16169888ff8Schristos typedef void (observer_free_objfile_ftype) (struct objfile *objfile);
16269888ff8Schristos 
16369888ff8Schristos extern struct observer *observer_attach_free_objfile (observer_free_objfile_ftype *f);
16469888ff8Schristos extern void observer_detach_free_objfile (struct observer *observer);
16569888ff8Schristos extern void observer_notify_free_objfile (struct objfile *objfile);
16669888ff8Schristos 
167da671615Schristos /* new_thread notifications.  */
168da671615Schristos 
169da671615Schristos typedef void (observer_new_thread_ftype) (struct thread_info *t);
170da671615Schristos 
171da671615Schristos extern struct observer *observer_attach_new_thread (observer_new_thread_ftype *f);
172da671615Schristos extern void observer_detach_new_thread (struct observer *observer);
173da671615Schristos extern void observer_notify_new_thread (struct thread_info *t);
174da671615Schristos 
175da671615Schristos /* thread_exit notifications.  */
176da671615Schristos 
177da671615Schristos typedef void (observer_thread_exit_ftype) (struct thread_info *t, int silent);
178da671615Schristos 
179da671615Schristos extern struct observer *observer_attach_thread_exit (observer_thread_exit_ftype *f);
180da671615Schristos extern void observer_detach_thread_exit (struct observer *observer);
181da671615Schristos extern void observer_notify_thread_exit (struct thread_info *t, int silent);
182da671615Schristos 
183da671615Schristos /* thread_stop_requested notifications.  */
184da671615Schristos 
185da671615Schristos typedef void (observer_thread_stop_requested_ftype) (ptid_t ptid);
186da671615Schristos 
187da671615Schristos extern struct observer *observer_attach_thread_stop_requested (observer_thread_stop_requested_ftype *f);
188da671615Schristos extern void observer_detach_thread_stop_requested (struct observer *observer);
189da671615Schristos extern void observer_notify_thread_stop_requested (ptid_t ptid);
190da671615Schristos 
191da671615Schristos /* target_resumed notifications.  */
192da671615Schristos 
193da671615Schristos typedef void (observer_target_resumed_ftype) (ptid_t ptid);
194da671615Schristos 
195da671615Schristos extern struct observer *observer_attach_target_resumed (observer_target_resumed_ftype *f);
196da671615Schristos extern void observer_detach_target_resumed (struct observer *observer);
197da671615Schristos extern void observer_notify_target_resumed (ptid_t ptid);
198da671615Schristos 
199da671615Schristos /* about_to_proceed notifications.  */
200da671615Schristos 
201da671615Schristos typedef void (observer_about_to_proceed_ftype) (void);
202da671615Schristos 
203da671615Schristos extern struct observer *observer_attach_about_to_proceed (observer_about_to_proceed_ftype *f);
204da671615Schristos extern void observer_detach_about_to_proceed (struct observer *observer);
205da671615Schristos extern void observer_notify_about_to_proceed (void);
206da671615Schristos 
207da671615Schristos /* breakpoint_created notifications.  */
208da671615Schristos 
2098bd2f7aeSchristos typedef void (observer_breakpoint_created_ftype) (struct breakpoint *b);
210da671615Schristos 
211da671615Schristos extern struct observer *observer_attach_breakpoint_created (observer_breakpoint_created_ftype *f);
212da671615Schristos extern void observer_detach_breakpoint_created (struct observer *observer);
2138bd2f7aeSchristos extern void observer_notify_breakpoint_created (struct breakpoint *b);
214da671615Schristos 
215da671615Schristos /* breakpoint_deleted notifications.  */
216da671615Schristos 
2178bd2f7aeSchristos typedef void (observer_breakpoint_deleted_ftype) (struct breakpoint *b);
218da671615Schristos 
219da671615Schristos extern struct observer *observer_attach_breakpoint_deleted (observer_breakpoint_deleted_ftype *f);
220da671615Schristos extern void observer_detach_breakpoint_deleted (struct observer *observer);
2218bd2f7aeSchristos extern void observer_notify_breakpoint_deleted (struct breakpoint *b);
222da671615Schristos 
223da671615Schristos /* breakpoint_modified notifications.  */
224da671615Schristos 
2258bd2f7aeSchristos typedef void (observer_breakpoint_modified_ftype) (struct breakpoint *b);
226da671615Schristos 
227da671615Schristos extern struct observer *observer_attach_breakpoint_modified (observer_breakpoint_modified_ftype *f);
228da671615Schristos extern void observer_detach_breakpoint_modified (struct observer *observer);
2298bd2f7aeSchristos extern void observer_notify_breakpoint_modified (struct breakpoint *b);
230da671615Schristos 
2318bd2f7aeSchristos /* traceframe_changed notifications.  */
232da671615Schristos 
2338bd2f7aeSchristos typedef void (observer_traceframe_changed_ftype) (int tfnum, int tpnum);
234da671615Schristos 
2358bd2f7aeSchristos extern struct observer *observer_attach_traceframe_changed (observer_traceframe_changed_ftype *f);
2368bd2f7aeSchristos extern void observer_detach_traceframe_changed (struct observer *observer);
2378bd2f7aeSchristos extern void observer_notify_traceframe_changed (int tfnum, int tpnum);
238da671615Schristos 
239da671615Schristos /* architecture_changed notifications.  */
240da671615Schristos 
241da671615Schristos typedef void (observer_architecture_changed_ftype) (struct gdbarch *newarch);
242da671615Schristos 
243da671615Schristos extern struct observer *observer_attach_architecture_changed (observer_architecture_changed_ftype *f);
244da671615Schristos extern void observer_detach_architecture_changed (struct observer *observer);
245da671615Schristos extern void observer_notify_architecture_changed (struct gdbarch *newarch);
246da671615Schristos 
247da671615Schristos /* thread_ptid_changed notifications.  */
248da671615Schristos 
249da671615Schristos typedef void (observer_thread_ptid_changed_ftype) (ptid_t old_ptid, ptid_t new_ptid);
250da671615Schristos 
251da671615Schristos extern struct observer *observer_attach_thread_ptid_changed (observer_thread_ptid_changed_ftype *f);
252da671615Schristos extern void observer_detach_thread_ptid_changed (struct observer *observer);
253da671615Schristos extern void observer_notify_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid);
254da671615Schristos 
255da671615Schristos /* inferior_added notifications.  */
256da671615Schristos 
257da671615Schristos typedef void (observer_inferior_added_ftype) (struct inferior *inf);
258da671615Schristos 
259da671615Schristos extern struct observer *observer_attach_inferior_added (observer_inferior_added_ftype *f);
260da671615Schristos extern void observer_detach_inferior_added (struct observer *observer);
261da671615Schristos extern void observer_notify_inferior_added (struct inferior *inf);
262da671615Schristos 
263da671615Schristos /* inferior_appeared notifications.  */
264da671615Schristos 
265da671615Schristos typedef void (observer_inferior_appeared_ftype) (struct inferior *inf);
266da671615Schristos 
267da671615Schristos extern struct observer *observer_attach_inferior_appeared (observer_inferior_appeared_ftype *f);
268da671615Schristos extern void observer_detach_inferior_appeared (struct observer *observer);
269da671615Schristos extern void observer_notify_inferior_appeared (struct inferior *inf);
270da671615Schristos 
271da671615Schristos /* inferior_exit notifications.  */
272da671615Schristos 
273da671615Schristos typedef void (observer_inferior_exit_ftype) (struct inferior *inf);
274da671615Schristos 
275da671615Schristos extern struct observer *observer_attach_inferior_exit (observer_inferior_exit_ftype *f);
276da671615Schristos extern void observer_detach_inferior_exit (struct observer *observer);
277da671615Schristos extern void observer_notify_inferior_exit (struct inferior *inf);
278da671615Schristos 
279da671615Schristos /* inferior_removed notifications.  */
280da671615Schristos 
281da671615Schristos typedef void (observer_inferior_removed_ftype) (struct inferior *inf);
282da671615Schristos 
283da671615Schristos extern struct observer *observer_attach_inferior_removed (observer_inferior_removed_ftype *f);
284da671615Schristos extern void observer_detach_inferior_removed (struct observer *observer);
285da671615Schristos extern void observer_notify_inferior_removed (struct inferior *inf);
286da671615Schristos 
287da671615Schristos /* memory_changed notifications.  */
288da671615Schristos 
2898bd2f7aeSchristos typedef void (observer_memory_changed_ftype) (struct inferior *inferior, CORE_ADDR addr, ssize_t len, const bfd_byte *data);
290da671615Schristos 
291da671615Schristos extern struct observer *observer_attach_memory_changed (observer_memory_changed_ftype *f);
292da671615Schristos extern void observer_detach_memory_changed (struct observer *observer);
2938bd2f7aeSchristos extern void observer_notify_memory_changed (struct inferior *inferior, CORE_ADDR addr, ssize_t len, const bfd_byte *data);
2948bd2f7aeSchristos 
2958bd2f7aeSchristos /* before_prompt notifications.  */
2968bd2f7aeSchristos 
2978bd2f7aeSchristos typedef void (observer_before_prompt_ftype) (const char *current_prompt);
2988bd2f7aeSchristos 
2998bd2f7aeSchristos extern struct observer *observer_attach_before_prompt (observer_before_prompt_ftype *f);
3008bd2f7aeSchristos extern void observer_detach_before_prompt (struct observer *observer);
3018bd2f7aeSchristos extern void observer_notify_before_prompt (const char *current_prompt);
3028bd2f7aeSchristos 
3038bd2f7aeSchristos /* gdb_datadir_changed notifications.  */
3048bd2f7aeSchristos 
3058bd2f7aeSchristos typedef void (observer_gdb_datadir_changed_ftype) (void);
3068bd2f7aeSchristos 
3078bd2f7aeSchristos extern struct observer *observer_attach_gdb_datadir_changed (observer_gdb_datadir_changed_ftype *f);
3088bd2f7aeSchristos extern void observer_detach_gdb_datadir_changed (struct observer *observer);
3098bd2f7aeSchristos extern void observer_notify_gdb_datadir_changed (void);
3108bd2f7aeSchristos 
3118bd2f7aeSchristos /* command_param_changed notifications.  */
3128bd2f7aeSchristos 
3138bd2f7aeSchristos typedef void (observer_command_param_changed_ftype) (const char *param, const char *value);
3148bd2f7aeSchristos 
3158bd2f7aeSchristos extern struct observer *observer_attach_command_param_changed (observer_command_param_changed_ftype *f);
3168bd2f7aeSchristos extern void observer_detach_command_param_changed (struct observer *observer);
3178bd2f7aeSchristos extern void observer_notify_command_param_changed (const char *param, const char *value);
3188bd2f7aeSchristos 
3198bd2f7aeSchristos /* tsv_created notifications.  */
3208bd2f7aeSchristos 
3218bd2f7aeSchristos typedef void (observer_tsv_created_ftype) (const struct trace_state_variable *tsv);
3228bd2f7aeSchristos 
3238bd2f7aeSchristos extern struct observer *observer_attach_tsv_created (observer_tsv_created_ftype *f);
3248bd2f7aeSchristos extern void observer_detach_tsv_created (struct observer *observer);
3258bd2f7aeSchristos extern void observer_notify_tsv_created (const struct trace_state_variable *tsv);
3268bd2f7aeSchristos 
3278bd2f7aeSchristos /* tsv_deleted notifications.  */
3288bd2f7aeSchristos 
3298bd2f7aeSchristos typedef void (observer_tsv_deleted_ftype) (const struct trace_state_variable *tsv);
3308bd2f7aeSchristos 
3318bd2f7aeSchristos extern struct observer *observer_attach_tsv_deleted (observer_tsv_deleted_ftype *f);
3328bd2f7aeSchristos extern void observer_detach_tsv_deleted (struct observer *observer);
3338bd2f7aeSchristos extern void observer_notify_tsv_deleted (const struct trace_state_variable *tsv);
3348bd2f7aeSchristos 
3358bd2f7aeSchristos /* tsv_modified notifications.  */
3368bd2f7aeSchristos 
3378bd2f7aeSchristos typedef void (observer_tsv_modified_ftype) (const struct trace_state_variable *tsv);
3388bd2f7aeSchristos 
3398bd2f7aeSchristos extern struct observer *observer_attach_tsv_modified (observer_tsv_modified_ftype *f);
3408bd2f7aeSchristos extern void observer_detach_tsv_modified (struct observer *observer);
3418bd2f7aeSchristos extern void observer_notify_tsv_modified (const struct trace_state_variable *tsv);
342da671615Schristos 
34397d73739Schristos /* inferior_call_pre notifications.  */
34497d73739Schristos 
34597d73739Schristos typedef void (observer_inferior_call_pre_ftype) (ptid_t thread, CORE_ADDR address);
34697d73739Schristos 
34797d73739Schristos extern struct observer *observer_attach_inferior_call_pre (observer_inferior_call_pre_ftype *f);
34897d73739Schristos extern void observer_detach_inferior_call_pre (struct observer *observer);
34997d73739Schristos extern void observer_notify_inferior_call_pre (ptid_t thread, CORE_ADDR address);
35097d73739Schristos 
35197d73739Schristos /* inferior_call_post notifications.  */
35297d73739Schristos 
35397d73739Schristos typedef void (observer_inferior_call_post_ftype) (ptid_t thread, CORE_ADDR address);
35497d73739Schristos 
35597d73739Schristos extern struct observer *observer_attach_inferior_call_post (observer_inferior_call_post_ftype *f);
35697d73739Schristos extern void observer_detach_inferior_call_post (struct observer *observer);
35797d73739Schristos extern void observer_notify_inferior_call_post (ptid_t thread, CORE_ADDR address);
35897d73739Schristos 
35997d73739Schristos /* register_changed notifications.  */
36097d73739Schristos 
36197d73739Schristos typedef void (observer_register_changed_ftype) (struct frame_info *frame, int regnum);
36297d73739Schristos 
36397d73739Schristos extern struct observer *observer_attach_register_changed (observer_register_changed_ftype *f);
36497d73739Schristos extern void observer_detach_register_changed (struct observer *observer);
36597d73739Schristos extern void observer_notify_register_changed (struct frame_info *frame, int regnum);
36697d73739Schristos 
367da671615Schristos /* test_notification notifications.  */
368da671615Schristos 
369da671615Schristos typedef void (observer_test_notification_ftype) (int somearg);
370da671615Schristos 
371da671615Schristos extern struct observer *observer_attach_test_notification (observer_test_notification_ftype *f);
372da671615Schristos extern void observer_detach_test_notification (struct observer *observer);
373da671615Schristos extern void observer_notify_test_notification (int somearg);
374da671615Schristos 
375a417a46eSchristos /* user_selected_context_changed notifications.  */
376a417a46eSchristos 
377a417a46eSchristos typedef void (observer_user_selected_context_changed_ftype) (user_selected_what selection);
378a417a46eSchristos 
379a417a46eSchristos extern struct observer *observer_attach_user_selected_context_changed (observer_user_selected_context_changed_ftype *f);
380a417a46eSchristos extern void observer_detach_user_selected_context_changed (struct observer *observer);
381a417a46eSchristos extern void observer_notify_user_selected_context_changed (user_selected_what selection);
382a417a46eSchristos 
383da671615Schristos #endif /* OBSERVER_H */
384