<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/89443>89443</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc][gnu ext] implement pthread_rwlockattr_{get|set}kind_np
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            libc
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          nickdesaulniers
      </td>
    </tr>
</table>

<pre>
    These functions are perhaps useful. Not implemented in #89322 because I didn't know they existed.

Since these aren't POSIX but instead gnu extensions, these should go in FOO rather than libc/spec/posix.td; we already have an entry for pthreads.h in that file.  It will be easier for someone to start on this once #89322 lands.

I would extend our definition of `pthread_rwlockattr_t` in libc/include/llvm-libc-types/pthread_rwlockattr_t.h to include a new `int` member named `pref` such that these functions are simple getters and setters.

Then it sounds like we should define 3 macros (in libc/include/pthread.h.def, though keep an eye on https://github.com/llvm/llvm-project/issues/88997, too)
- PTHREAD_RWLOCK_PREFER_READER_NP
- PTHREAD_RWLOCK_PREFER_WRITER_NP
- PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVF2P6jYT_jXmZrQRcRJCLnKxu4Be9FYLYrc9vUNOPIldHDvyOIfl31cOtEdHWlWqemOQPR_Px2QEke4tYs2KF1ZsFmIKyvna6vYikcRkrEZPi8bJW_2hkBC6ybZBO0sgPMKIXomRYCLsJpPAmwugh9HggDagBG2B8WxdZZxDg62YCGEPUkvLeBngYt0VgsIb4KemgDJhyw1bPt_Pd21bjM-Esdk95Xh43_8OzRRAWwooJPR2AvwMaCnCYvz1kULKTUZC7yKK3eEAXgSFHoISFoxuWsZ3NGL8GR3pzyRIlr3AFUEYj0LeQInvCMIC2uBv0DkPY1DxiRIViwYlAnTaYAKwD3DVxkCDgII0-jme3IDOIgQHFIQP4GKWJnCR2t_SGGEl_cR9D9cZ_UxMgps8SOy01VF7cB2w1fIB5uyvxrUXEYI_B7ZaRmQPetq2ZpLI-M6Y78NTvH0KtxEpcv4iO1ER6SMLBFi8xkbaznUHHBr0YMWAcu7vsYv3NLXqrkX4YkRongfoMQT0BMJKoPv_nwh_KLSgA5CbrCQw-oLRioeJM3eEDAbRekfA-Porlg9OiUokdvdJcFOv4II4zkbeMDqgQhiJZc-M7xjf9TqoqUlaNzx0-kuu0bs_sA2xA9E0i7ZeV1U5F3aO8eoO_QmOH_87bZ8359O3Xw6v_z8fT9vd9nSOV9vT-e34z2HfTvuPfxF2eDttX389ve9_257fjgtZZ7LKKrHAOi3TrChyvkoXqi5FVi6zPC2ytBFZk7ZVWXRc8lSscrEu0oWu-ZLnyzyt0iot8zRZp2lVdc1qVeXlOssFy5c4CG2SKEbifL-YZajXVZ5nCyMaNDTvDc575yR02lOAOYZxzvgr4_zuEI-rxdezqM3UE8uXRlOgH5WDDmZeQnNCsWHFy-OzZsXmx0aBL4aWlS89Bla-Ujw3F23l2Y6LyZv6P_gcOf4ZAAD__wYkr0c">