Date: Fri, 27 Dec 2019 11:50:02 +0100 From: Hans Petter Selasky <hps@selasky.org> To: Ronald Klop <ronald-lists@klop.ws>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, Mateusz Guzik <mjg@freebsd.org> Subject: Re: svn commit: r356120 - head/sys/security/mac Message-ID: <053d786b-b3ed-53e3-e863-45801dbcd933@selasky.org> In-Reply-To: <op.0dgfqujxkndu52@sjakie> References: <201912271123.xBRBNWow013539@repo.freebsd.org> <op.0dgfqujxkndu52@sjakie>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2019-12-27 12:33, Ronald Klop wrote:
> Wow, this looks like a winner.
>
> Ronald.
Is this a spin-off from epoch methodology?
It is possible to use epoch as a part of read mostly locking too.
The basic idea here is to have a variable/refcount which when set,
fallback to a regular mutex during read-locking. This is all
synchronized under epoch.
Pseudo code:
read_lock() {
epoch_enter();
do_lock = writers != 0;
if (do_lock)
mtx_lock();
}
read_unlock() {
if (do_lock)
mtx_unlock();
epoch_exit();
}
write_lock() {
writers++;
epoch_wait();
mtx_lock();
}
write_unlock() {
mtx_unlock();
writers--;
epoch_wait();
}
--HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?053d786b-b3ed-53e3-e863-45801dbcd933>
