svn commit: r357728 - head/sys/sys
Mateusz Guzik
mjg at FreeBSD.org
Mon Feb 10 13:52:26 UTC 2020
Author: mjg
Date: Mon Feb 10 13:52:25 2020
New Revision: 357728
URL: https://svnweb.freebsd.org/changeset/base/357728
Log:
Tidy up zpcpu_replace*
- only compute the target address once
- remove spurious type casting, zpcpu_get already return the correct type
While here add missing newlines to other routines.
Modified:
head/sys/sys/pcpu.h
Modified: head/sys/sys/pcpu.h
==============================================================================
--- head/sys/sys/pcpu.h Mon Feb 10 13:24:14 2020 (r357727)
+++ head/sys/sys/pcpu.h Mon Feb 10 13:52:25 2020 (r357728)
@@ -245,32 +245,41 @@ extern struct pcpu *cpuid_to_pcpu[];
* If you need atomicity use xchg.
* */
#define zpcpu_replace(base, val) ({ \
- __typeof(val) _old = *(__typeof(base))zpcpu_get(base); \
- *(__typeof(val) *)zpcpu_get(base) = val; \
+ __typeof(val) *_ptr = zpcpu_get(base); \
+ __typeof(val) _old; \
+ \
+ _old = *_ptr; \
+ *_ptr = val; \
_old; \
})
#define zpcpu_replace_cpu(base, val, cpu) ({ \
- __typeof(val) _old = *(__typeof(base))zpcpu_get_cpu(base, cpu); \
- *(__typeof(val) *)zpcpu_get_cpu(base, cpu) = val; \
+ __typeof(val) *_ptr = zpcpu_get_cpu(base, cpu); \
+ __typeof(val) _old; \
+ \
+ _old = *_ptr; \
+ *_ptr = val; \
_old; \
})
#define zpcpu_set_protected(base, val) ({ \
MPASS(curthread->td_critnest > 0); \
__typeof(val) *_ptr = zpcpu_get(base); \
+ \
*_ptr = (val); \
})
#define zpcpu_add_protected(base, val) ({ \
MPASS(curthread->td_critnest > 0); \
__typeof(val) *_ptr = zpcpu_get(base); \
+ \
*_ptr += (val); \
})
#define zpcpu_sub_protected(base, val) ({ \
MPASS(curthread->td_critnest > 0); \
__typeof(val) *_ptr = zpcpu_get(base); \
+ \
*_ptr -= (val); \
})
More information about the svn-src-all
mailing list