35 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __ASM_GENERIC_QRWLOCK_TYPES_H3#define __ASM_GENERIC_QRWLOCK_TYPES_H4 5#include <linux/types.h>6#include <asm/byteorder.h>7#include <asm/spinlock_types.h>8 9/*10 * The queued read/write lock data structure11 */12 13typedef struct qrwlock {14 union {15 atomic_t cnts;16 struct {17#ifdef __LITTLE_ENDIAN18 u8 wlocked; /* Locked for write? */19 u8 __lstate[3];20#else21 u8 __lstate[3];22 u8 wlocked; /* Locked for write? */23#endif24 };25 };26 arch_spinlock_t wait_lock;27} arch_rwlock_t;28 29#define __ARCH_RW_LOCK_UNLOCKED { \30 { .cnts = ATOMIC_INIT(0), }, \31 .wait_lock = __ARCH_SPIN_LOCK_UNLOCKED, \32}33 34#endif /* __ASM_GENERIC_QRWLOCK_TYPES_H */35