Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/asm/spinlock.h
Line
Count
Source
1
#ifndef __ASM_SPINLOCK_H
2
#define __ASM_SPINLOCK_H
3
4
#define _raw_read_unlock(l) \
5
    BUILD_BUG_ON(sizeof((l)->lock) != 4); /* Clang doesn't support %z in asm. */ \
6
    asm volatile ( "lock; decl %0" : "+m" ((l)->lock) :: "memory" )
7
8
/*
9
 * On x86 the only reordering is of reads with older writes.  In the
10
 * lock case, the read in observe_head() can only be reordered with
11
 * writes that precede it, and moving a write _into_ a locked section
12
 * is OK.  In the release case, the write in add_sized() can only be
13
 * reordered with reads that follow it, and hoisting a read _into_ a
14
 * locked region is OK.
15
 */
16
48.7M
#define arch_lock_acquire_barrier() barrier()
17
48.9M
#define arch_lock_release_barrier() barrier()
18
19
941k
#define arch_lock_relax() cpu_relax()
20
#define arch_lock_signal()
21
7
#define arch_lock_signal_wmb()      \
22
7
({                                  \
23
7
    smp_wmb();                      \
24
7
    arch_lock_signal();             \
25
7
})
26
27
#endif /* __ASM_SPINLOCK_H */