From d5bfbe1cf4cbaff864175209488589314eb85411 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 1 Jan 2021 18:28:26 -0700 Subject: [PATCH] libtemporal: provide API to abort TempoMap RCU update step --- libs/temporal/tempo.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libs/temporal/tempo.cc b/libs/temporal/tempo.cc index 713cc14343..5d4ee9e616 100644 --- a/libs/temporal/tempo.cc +++ b/libs/temporal/tempo.cc @@ -2952,3 +2952,16 @@ TempoMap::update (TempoMap::SharedPtr m) MapChanged (); /* EMIT SIGNAL */ } + +void +TempoMap::abort_update () +{ + /* drop lock taken by write_copy() */ + _map_mgr.abort (); + /* update thread local map pointer in calling thread. Note that this + will reset _tempo_map_p, which is (almost guaranteed to be) the only + reference to the copy of the map made in ::write_copy(), so it will + be destroyed here. + */ + TempoMap::fetch (); +}