f96a8cc3c6
seqlock: use atomic writes for the sequence
...
There is a data race if the sequence is written concurrently to the
read. In C11 this has undefined behavior. Use atomic_set; the
read side is already using atomic_read.
Reported-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20160930213106.20186-6-alex.bennee@linaro.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2016-10-04 10:00:26 +02:00
175de52487
Clean up decorations and whitespace around header guards
...
Cleaned up with scripts/clean-header-guards.pl.
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Richard Henderson <rth@twiddle.net >
2016-07-12 16:20:46 +02:00
a9c94277f0
Use #include "..." for our own headers, <...> for others
...
Tracked down with an ugly, brittle and probably buggy Perl script.
Also move includes converted to <...> up so they get included before
ours where that's obviously okay.
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Eric Blake <eblake@redhat.com >
Tested-by: Eric Blake <eblake@redhat.com >
Reviewed-by: Richard Henderson <rth@twiddle.net >
2016-07-12 16:19:16 +02:00
03719e44b6
seqlock: rename write_lock/unlock to write_begin/end
...
It is a more appropriate name, now that the mutex embedded
in the seqlock is gone.
Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1465412133-3029-4-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2016-06-11 22:59:34 +00:00
ccdb3c1fc8
seqlock: remove optional mutex
...
This option is unused; besides, it bloats the struct when not needed.
Let's just let writers define their own locks elsewhere.
Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1465412133-3029-3-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2016-06-11 22:59:34 +00:00
d12f730948
seqlock: read sequence number atomically
...
With this change we make sure that the compiler will not
optimise the read of the sequence number in any way.
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1440375847-17603-8-git-send-email-cota@braap.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2015-09-07 18:12:39 +02:00
123fdbac9b
seqlock: add missing 'inline' to seqlock_read_retry
...
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1440375847-17603-7-git-send-email-cota@braap.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2015-09-07 18:12:31 +02:00
ea753d81e8
seqlock: introduce read-write seqlock
...
Seqlock implementation for QEMU. Usage idiom
reader:
do {
start = seqlock_read_begin(&sl);
...
} while (seqlock_read_retry(&sl, start));
writer:
seqlock_write_lock(&sl);
...
seqlock_write_unlock(&sl);
initialization:
seqlock_init(QemuSeqLock *sl, QemuMutex *mutex)
mutex could be NULL if the caller will provide its own protection
for concurrent write sides (typically using the BQL).
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2013-10-17 17:24:15 +02:00