(root)/
glibc-2.38/
sysdeps/
sparc/
nptl/
bits/
struct_rwlock.h
       1  /* SPARC internal rwlock struct definitions.
       2     Copyright (C) 2019-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of the GNU C Library.
       5  
       6     The GNU C Library is free software; you can redistribute it and/or
       7     modify it under the terms of the GNU Lesser General Public
       8     License as published by the Free Software Foundation; either
       9     version 2.1 of the License, or (at your option) any later version.
      10  
      11     The GNU C Library is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14     Lesser General Public License for more details.
      15  
      16     You should have received a copy of the GNU Lesser General Public
      17     License along with the GNU C Library; if not, see
      18     <http://www.gnu.org/licenses/>.  */
      19  
      20  #ifndef _RWLOCK_INTERNAL_H
      21  #define _RWLOCK_INTERNAL_H
      22  
      23  struct __pthread_rwlock_arch_t
      24  {
      25    unsigned int __readers;
      26    unsigned int __writers;
      27    unsigned int __wrphase_futex;
      28    unsigned int __writers_futex;
      29    unsigned int __pad3;
      30    unsigned int __pad4;
      31  #if __WORDSIZE == 64
      32    int __cur_writer;
      33    int __shared;
      34    unsigned long int __pad1;
      35    unsigned long int __pad2;
      36    /* FLAGS must stay at this position in the structure to maintain
      37       binary compatibility.  */
      38    unsigned int __flags;
      39  #else
      40    unsigned char __pad1;
      41    unsigned char __pad2;
      42    unsigned char __shared;
      43    /* FLAGS must stay at this position in the structure to maintain
      44       binary compatibility.  */
      45    unsigned char __flags;
      46    int __cur_writer;
      47  #endif
      48  };
      49  
      50  #if __WORDSIZE == 64
      51  # define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
      52    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, __flags
      53  #else
      54  # define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
      55    0, 0, 0, 0, 0, 0, 0, 0, 0, __flags, 0
      56  #endif
      57  
      58  #endif