From db936b9b55fb825acbe7df4246097fe23d405612 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Mon, 3 Sep 2018 16:50:49 +0200 Subject: osmo-trx: Add osmo_signal to stop whole transceiver chain correctly on error Transceiver::stop() can only be called from either CTRL iface thread or from main thread (running osmocom loop). That's because stop attempts to cancel and then join all the other threads, which would then lock if attempting to stop from some of them. As a result, the best option is to indicate to the user of the transceiver option (osmo-trx.cpp) to stop it in a correct fashion by destroying the object from the main thread. Change-Id: Iac1d2dbe2328e735db2d4b933cb67b1af1babca1 --- CommonLibs/osmo_signal.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 CommonLibs/osmo_signal.h (limited to 'CommonLibs/osmo_signal.h') diff --git a/CommonLibs/osmo_signal.h b/CommonLibs/osmo_signal.h new file mode 100644 index 0000000..00b8097 --- /dev/null +++ b/CommonLibs/osmo_signal.h @@ -0,0 +1,35 @@ +/* Generic signalling/notification infrastructure */ +/* (C) 2018 by sysmocom s.f.m.c. GmbH + * + * Author: Pau Espin Pedrol + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +#pragma once + +#include + +/* Signalling subsystems */ +enum signal_subsystems { + SS_TRANSC, +}; + +/* SS_TRANSC signals */ +enum SS_TRANSC { + S_TRANSC_STOP_REQUIRED, /* Transceiver fatal error, it should be stopped */ +}; -- cgit v1.2.3