linux/include/asm-generic/qrwlock_types.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ASM_GENERIC_QRWLOCK_TYPES_H
   3#define __ASM_GENERIC_QRWLOCK_TYPES_H
   4
   5#include <linux/types.h>
   6#include <asm/byteorder.h>
   7#include <asm/spinlock_types.h>
   8
   9/*
  10 * The queue read/write lock data structure
  11 */
  12
  13typedef struct qrwlock {
  14        union {
  15                atomic_t cnts;
  16                struct {
  17#ifdef __LITTLE_ENDIAN
  18                        u8 wlocked;     /* Locked for write? */
  19                        u8 __lstate[3];
  20#else
  21                        u8 __lstate[3];
  22                        u8 wlocked;     /* Locked for write? */
  23#endif
  24                };
  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