From patchwork Sun Oct 14 12:55:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Vrany X-Patchwork-Id: 29735 Received: (qmail 30429 invoked by alias); 14 Oct 2018 12:56:02 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 30309 invoked by uid 89); 14 Oct 2018 12:56:01 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=observers, 6458 X-HELO: relay.fit.cvut.cz Received: from relay.fit.cvut.cz (HELO relay.fit.cvut.cz) (147.32.232.237) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 14 Oct 2018 12:55:59 +0000 Received: from imap.fit.cvut.cz (imap.fit.cvut.cz [147.32.232.238]) by relay.fit.cvut.cz (8.15.2/8.15.2) with ESMTPS id w9ECtsg6096730 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 14 Oct 2018 14:55:56 +0200 (CEST) (envelope-from jan.vrany@fit.cvut.cz) Received: from localhost (ip-62-24-85-77.net.upcbroadband.cz [62.24.85.77]) (authenticated bits=0 as user vranyj1) by imap.fit.cvut.cz (8.15.2/8.15.2) with ESMTPSA id w9ECtsOn009494 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Sun, 14 Oct 2018 14:55:54 +0200 (CEST) (envelope-from jan.vrany@fit.cvut.cz) From: Jan Vrany To: gdb-patches@sourceware.org Cc: Jan Vrany Subject: [RFC 1/2] gdb: add new observables target_connected and target_disconnected Date: Sun, 14 Oct 2018 14:55:33 +0200 Message-Id: <20181014125534.11724-2-jan.vrany@fit.cvut.cz> In-Reply-To: <20181014125534.11724-1-jan.vrany@fit.cvut.cz> References: <20181014125534.11724-1-jan.vrany@fit.cvut.cz> MIME-Version: 1.0 Observers of these are notified whenver a target is connected or disconnected. gdb/ChangeLog: * observable.h: Define new observables target_connected and target_disconnected. * observable.c: Likewise. * target.c (target_stack::push, target_stack::unpush): Notify observers of target_connected and target_disconnected --- gdb/ChangeLog | 8 ++++++++ gdb/observable.c | 2 ++ gdb/observable.h | 6 ++++++ gdb/target.c | 7 +++++++ 4 files changed, 23 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b3cc64659f..d13ce2097d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2018-07-03 Jan Vrany + + * observable.h: Define new observables target_connected and + target_disconnected. + * observable.c: Likewise. + * target.c (target_stack::push, target_stack::unpush): Notify + observers of target_connected and target_disconnected + 2018-10-11 Gary Benson * interps.h (interp::m_name): Make private and mutable. diff --git a/gdb/observable.c b/gdb/observable.c index 5539b9837b..4b98612433 100644 --- a/gdb/observable.c +++ b/gdb/observable.c @@ -74,6 +74,8 @@ DEFINE_OBSERVABLE (inferior_call_pre); DEFINE_OBSERVABLE (inferior_call_post); DEFINE_OBSERVABLE (register_changed); DEFINE_OBSERVABLE (user_selected_context_changed); +DEFINE_OBSERVABLE (target_connected); +DEFINE_OBSERVABLE (target_disconnected); } /* namespace observers */ } /* namespace gdb */ diff --git a/gdb/observable.h b/gdb/observable.h index 34447b90bb..f1829db99f 100644 --- a/gdb/observable.h +++ b/gdb/observable.h @@ -228,6 +228,12 @@ extern observable register_changed; frame has changed. */ extern observable user_selected_context_changed; +/* A new target has been connected. */ +extern observable target_connected; + +/* A target has been disonnected. */ +extern observable target_disconnected; + } /* namespace observers */ } /* namespace gdb */ diff --git a/gdb/target.c b/gdb/target.c index 2d98954b54..5c19afead9 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -50,6 +50,7 @@ #include "terminal.h" #include #include +#include "observable.h" static void generic_tls_error (void) ATTRIBUTE_NORETURN; @@ -644,6 +645,8 @@ target_stack::push (target_ops *t) target_ops *prev = m_stack[t->to_stratum]; m_stack[t->to_stratum] = NULL; target_close (prev); + + gdb::observers::target_disconnected.notify (t); } /* Now add the new one. */ @@ -651,6 +654,8 @@ target_stack::push (target_ops *t) if (m_top < t->to_stratum) m_top = t->to_stratum; + + gdb::observers::target_connected.notify (t); } /* See target.h. */ @@ -701,6 +706,8 @@ target_stack::unpush (target_ops *t) implementation don't end up in T anymore. */ target_close (t); + gdb::observers::target_disconnected.notify (t); + return true; }