/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __ASM_GENERIC_QRWLOCK_TYPES_H #define __ASM_GENERIC_QRWLOCK_TYPES_H #include <linux/types.h> #include <asm/byteorder.h> #include <asm/spinlock_types.h> /* * The queued read/write lock data structure */ typedef struct qrwlock { union { atomic_t cnts; struct { #ifdef __LITTLE_ENDIAN u8 wlocked; /* Locked for write? */ u8 __lstate[3]; #else u8 __lstate[3]; u8 wlocked; /* Locked for write? */ #endif }; }; arch_spinlock_t wait_lock; } arch_rwlock_t; #define __ARCH_RW_LOCK_UNLOCKED { \ { .cnts = ATOMIC_INIT(0), }, \ .wait_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ } #endif /* __ASM_GENERIC_QRWLOCK_TYPES_H */