Date: Tue, 29 Dec 2020 11:49:49 +0100 From: Sebastian Huber <sebastian.huber@embedded-brains.de> To: freebsd-hackers@freebsd.org Subject: Why is there e_drain_sx and e_drain_mtx? Message-ID: <5eeae691-b7d4-932b-14cc-065a368e77de@embedded-brains.de>
next in thread | raw e-mail | index | archive | help
Hello,
in the epoch based reclamation implementation we have
struct epoch {
struct ck_epoch e_epoch __aligned(EPOCH_ALIGN);
epoch_record_t e_pcpu_record;
int e_in_use;
int e_flags;
struct sx e_drain_sx;
struct mtx e_drain_mtx;
volatile int e_drain_count;
const char *e_name;
};
The e_drain_sx and e_drain_mtx are only used in
void
epoch_drain_callbacks(epoch_t epoch)
{
...
DROP_GIANT();
sx_xlock(&epoch->e_drain_sx);
mtx_lock(&epoch->e_drain_mtx);
...
mtx_unlock(&epoch->e_drain_mtx);
sx_xunlock(&epoch->e_drain_sx);
PICKUP_GIANT();
}
Why is there a combination of a shared/exclusive lock and a mutex used
like this? Why is a single mutex insufficient?
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5eeae691-b7d4-932b-14cc-065a368e77de>
