diff options
author | Tom Tromey <tom@tromey.com> | 2019-04-07 16:31:01 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-04-19 14:29:33 -0600 |
commit | 97dfbaddad2b5acf3dd9f2c3e0135b89bde1cbf8 (patch) | |
tree | a41bf581ac78fbae6542524a3a7e3b2543081d64 /gdb/remote-notif.c | |
parent | Use std::list for event notifications in gdbserver (diff) | |
download | binutils-gdb-97dfbaddad2b5acf3dd9f2c3e0135b89bde1cbf8.tar.gz binutils-gdb-97dfbaddad2b5acf3dd9f2c3e0135b89bde1cbf8.tar.bz2 binutils-gdb-97dfbaddad2b5acf3dd9f2c3e0135b89bde1cbf8.zip |
Use std::list for remote_notif_state::notif_queue
This changes remote_notif_state::notif_queue to be a std::list and
updates all the uses.
gdb/ChangeLog
2019-04-19 Tom Tromey <tom@tromey.com>
* remote.c (remote_target): Use delete.
* remote-notif.h: Include <list>, not "common/queue.h".
(notif_client_p): Remove typedef.
(remote_notif_state): Add constructor, destructor, initializer.
<notif_queue>: Now a std::list.
(remote_notif_state_xfree): Don't declare.
* remote-notif.c (remote_notif_process, handle_notification)
(remote_notif_state_allocate): Update.
(~remote_notif_state): Rename from remote_notif_state_xfree.
Diffstat (limited to 'gdb/remote-notif.c')
-rw-r--r-- | gdb/remote-notif.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/gdb/remote-notif.c b/gdb/remote-notif.c index eece9470061..2680618b3fa 100644 --- a/gdb/remote-notif.c +++ b/gdb/remote-notif.c @@ -85,8 +85,6 @@ remote_notif_parse (remote_target *remote, return event.release (); } -DEFINE_QUEUE_P (notif_client_p); - /* Process notifications in STATE's notification queue one by one. EXCEPT is not expected in the queue. */ @@ -94,10 +92,10 @@ void remote_notif_process (struct remote_notif_state *state, struct notif_client *except) { - while (!QUEUE_is_empty (notif_client_p, state->notif_queue)) + while (!state->notif_queue.empty ()) { - struct notif_client *nc = QUEUE_deque (notif_client_p, - state->notif_queue); + struct notif_client *nc = state->notif_queue.front (); + state->notif_queue.pop_front (); gdb_assert (nc != except); @@ -158,7 +156,7 @@ handle_notification (struct remote_notif_state *state, const char *buf) /* Notify the event loop there's a stop reply to acknowledge and that there may be more events to fetch. */ - QUEUE_enque (notif_client_p, state->notif_queue, nc); + state->notif_queue.push_back (nc); if (target_is_non_stop_p ()) { /* In non-stop, We mark REMOTE_ASYNC_GET_PENDING_EVENTS_TOKEN @@ -212,12 +210,10 @@ handle_notification (struct remote_notif_state *state, const char *buf) struct remote_notif_state * remote_notif_state_allocate (remote_target *remote) { - struct remote_notif_state *notif_state = XCNEW (struct remote_notif_state); + struct remote_notif_state *notif_state = new struct remote_notif_state; notif_state->remote = remote; - notif_state->notif_queue = QUEUE_alloc (notif_client_p, NULL); - /* Register async_event_handler for notification. */ notif_state->get_pending_events_token @@ -229,21 +225,16 @@ remote_notif_state_allocate (remote_target *remote) /* Free STATE and its fields. */ -void -remote_notif_state_xfree (struct remote_notif_state *state) +remote_notif_state::~remote_notif_state () { int i; - QUEUE_free (notif_client_p, state->notif_queue); - /* Unregister async_event_handler for notification. */ - if (state->get_pending_events_token != NULL) - delete_async_event_handler (&state->get_pending_events_token); + if (get_pending_events_token != NULL) + delete_async_event_handler (&get_pending_events_token); for (i = 0; i < REMOTE_NOTIF_LAST; i++) - delete state->pending_event[i]; - - xfree (state); + delete pending_event[i]; } void |