Coverage Report

Created: 2026-10-28 07:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/fontconfig/src/fcmutex.h
Line
Count
Source
1
/*
2
 * Atomic int and pointer operations.  Originally copied from HarfBuzz.
3
 *
4
 * Copyright © 2007  Chris Wilson
5
 * Copyright © 2009,2010  Red Hat, Inc.
6
 * Copyright © 2011,2012,2013  Google, Inc.
7
 *
8
 * Permission is hereby granted, without written agreement and without
9
 * license or royalty fees, to use, copy, modify, and distribute this
10
 * software and its documentation for any purpose, provided that the
11
 * above copyright notice and the following two paragraphs appear in
12
 * all copies of this software.
13
 *
14
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18
 * DAMAGE.
19
 *
20
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
23
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25
 *
26
 * Contributor(s):
27
 *  Chris Wilson <chris@chris-wilson.co.uk>
28
 * Red Hat Author(s): Behdad Esfahbod
29
 * Google Author(s): Behdad Esfahbod
30
 */
31
32
#ifndef _FCMUTEX_H_
33
#define _FCMUTEX_H_
34
35
#ifdef HAVE_CONFIG_H
36
#  include <config.h>
37
#endif
38
39
#define FC_STMT_START do
40
#define FC_STMT_END   while (0)
41
42
/* mutex */
43
44
/* We need external help for these */
45
46
#if 0
47
48
#elif !defined(FC_NO_MT) && defined(_MSC_VER) || defined(__MINGW32__)
49
50
#  include "fcwindows.h"
51
typedef CRITICAL_SECTION fc_mutex_impl_t;
52
#  define FC_MUTEX_IMPL_INIT      { NULL, 0, 0, NULL, NULL, 0 }
53
#  define fc_mutex_impl_init(M)   InitializeCriticalSection (M)
54
#  define fc_mutex_impl_lock(M)   EnterCriticalSection (M)
55
#  define fc_mutex_impl_unlock(M) LeaveCriticalSection (M)
56
#  define fc_mutex_impl_finish(M) DeleteCriticalSection (M)
57
58
typedef SRWLOCK fc_rwlock_impl_t;
59
#  define FC_RWLOCK_IMPL_INIT         SRWLOCK_INIT
60
#  define fc_rwlock_impl_init(L)      InitializeSRWLock (L)
61
#  define fc_rwlock_impl_rdlock(L)    AcquireSRWLockShared (L)
62
#  define fc_rwlock_impl_wrlock(L)    AcquireSRWLockExclusive (L)
63
#  define fc_rwlock_impl_unlock_rd(L) ReleaseSRWLockShared (L)
64
#  define fc_rwlock_impl_unlock_wr(L) ReleaseSRWLockExclusive (L)
65
#  define fc_rwlock_impl_finish(L) \
66
      FC_STMT_START {}             \
67
      FC_STMT_END
68
69
#elif !defined(FC_NO_MT) && (defined(HAVE_PTHREAD) || defined(__APPLE__))
70
71
#  include <pthread.h>
72
typedef pthread_mutex_t fc_mutex_impl_t;
73
#  define FC_MUTEX_IMPL_INIT          PTHREAD_MUTEX_INITIALIZER
74
0
#  define fc_mutex_impl_init(M)       pthread_mutex_init (M, NULL)
75
0
#  define fc_mutex_impl_lock(M)       pthread_mutex_lock (M)
76
0
#  define fc_mutex_impl_unlock(M)     pthread_mutex_unlock (M)
77
0
#  define fc_mutex_impl_finish(M)     pthread_mutex_destroy (M)
78
79
typedef pthread_rwlock_t fc_rwlock_impl_t;
80
#  define FC_RWLOCK_IMPL_INIT         PTHREAD_RWLOCK_INITIALIZER
81
0
#  define fc_rwlock_impl_init(L)      pthread_rwlock_init (L, NULL)
82
0
#  define fc_rwlock_impl_rdlock(L)    pthread_rwlock_rdlock (L)
83
0
#  define fc_rwlock_impl_wrlock(L)    pthread_rwlock_wrlock (L)
84
0
#  define fc_rwlock_impl_unlock_rd(L) pthread_rwlock_unlock (L)
85
0
#  define fc_rwlock_impl_unlock_wr(L) pthread_rwlock_unlock (L)
86
0
#  define fc_rwlock_impl_finish(L)    pthread_rwlock_destroy (L)
87
88
#elif !defined(FC_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
89
90
#  if defined(HAVE_SCHED_H) && defined(HAVE_SCHED_YIELD)
91
#    include <sched.h>
92
#    define FC_SCHED_YIELD() sched_yield()
93
#  else
94
#    define FC_SCHED_YIELD() \
95
  FC_STMT_START {}     \
96
  FC_STMT_END
97
#  endif
98
99
/* This actually is not a totally awful implementation. */
100
typedef volatile int fc_mutex_impl_t;
101
#  define FC_MUTEX_IMPL_INIT    0
102
#  define fc_mutex_impl_init(M) *(M) = 0
103
#  define fc_mutex_impl_lock(M)                     \
104
      FC_STMT_START                                 \
105
      {                                             \
106
    while (__sync_lock_test_and_set ((M), 1)) \
107
        FC_SCHED_YIELD();                     \
108
      }                                             \
109
      FC_STMT_END
110
#  define fc_mutex_impl_unlock(M) __sync_lock_release (M)
111
#  define fc_mutex_impl_finish(M) \
112
      FC_STMT_START {}            \
113
      FC_STMT_END
114
115
typedef fc_mutex_impl_t fc_rwlock_impl_t;
116
#  define FC_RWLOCK_IMPL_INIT         FC_MUTEX_IMPL_INIT
117
#  define fc_rwlock_impl_init(L)      fc_mutex_impl_init (L)
118
#  define fc_rwlock_impl_rdlock(L)    fc_mutex_impl_lock (L)
119
#  define fc_rwlock_impl_wrlock(L)    fc_mutex_impl_lock (L)
120
#  define fc_rwlock_impl_unlock_rd(L) fc_mutex_impl_unlock (L)
121
#  define fc_rwlock_impl_unlock_wr(L) fc_mutex_impl_unlock (L)
122
#  define fc_rwlock_impl_finish(L)    fc_mutex_impl_finish (L)
123
124
#elif !defined(FC_NO_MT)
125
126
#  if defined(HAVE_SCHED_H) && defined(HAVE_SCHED_YIELD)
127
#    include <sched.h>
128
#    define FC_SCHED_YIELD() sched_yield()
129
#  else
130
#    define FC_SCHED_YIELD() \
131
  FC_STMT_START {}     \
132
  FC_STMT_END
133
#  endif
134
135
#  define FC_MUTEX_INT_NIL      1 /* Warn that fallback implementation is in use. */
136
typedef volatile int fc_mutex_impl_t;
137
#  define FC_MUTEX_IMPL_INIT    0
138
#  define fc_mutex_impl_init(M) *(M) = 0
139
#  define fc_mutex_impl_lock(M) \
140
      FC_STMT_START             \
141
      {                         \
142
    while (*(M))          \
143
        FC_SCHED_YIELD(); \
144
    (*(M))++;             \
145
      }                         \
146
      FC_STMT_END
147
#  define fc_mutex_impl_unlock(M) (*(M))--;
148
#  define fc_mutex_impl_finish(M) \
149
      FC_STMT_START {}            \
150
      FC_STMT_END
151
152
typedef fc_mutex_impl_t fc_rwlock_impl_t;
153
#  define FC_RWLOCK_IMPL_INIT         FC_MUTEX_IMPL_INIT
154
#  define fc_rwlock_impl_init(L)      fc_mutex_impl_init (L)
155
#  define fc_rwlock_impl_rdlock(L)    fc_mutex_impl_lock (L)
156
#  define fc_rwlock_impl_wrlock(L)    fc_mutex_impl_lock (L)
157
#  define fc_rwlock_impl_unlock_rd(L) fc_mutex_impl_unlock (L)
158
#  define fc_rwlock_impl_unlock_wr(L) fc_mutex_impl_unlock (L)
159
#  define fc_rwlock_impl_finish(L)    fc_mutex_impl_finish (L)
160
161
#else /* FC_NO_MT */
162
163
typedef int fc_mutex_impl_t;
164
#  define FC_MUTEX_IMPL_INIT 0
165
#  define fc_mutex_impl_init(M) \
166
      FC_STMT_START {}          \
167
      FC_STMT_END
168
#  define fc_mutex_impl_lock(M) \
169
      FC_STMT_START {}          \
170
      FC_STMT_END
171
#  define fc_mutex_impl_unlock(M) \
172
      FC_STMT_START {}            \
173
      FC_STMT_END
174
#  define fc_mutex_impl_finish(M) \
175
      FC_STMT_START {}            \
176
      FC_STMT_END
177
178
typedef fc_mutex_impl_t fc_rwlock_impl_t;
179
#  define FC_RWLOCK_IMPL_INIT         FC_MUTEX_IMPL_INIT
180
#  define fc_rwlock_impl_init(L)      fc_mutex_impl_init (L)
181
#  define fc_rwlock_impl_rdlock(L)    fc_mutex_impl_lock (L)
182
#  define fc_rwlock_impl_wrlock(L)    fc_mutex_impl_lock (L)
183
#  define fc_rwlock_impl_unlock_rd(L) fc_mutex_impl_unlock (L)
184
#  define fc_rwlock_impl_unlock_wr(L) fc_mutex_impl_unlock (L)
185
#  define fc_rwlock_impl_finish(L)    fc_mutex_impl_finish (L)
186
187
#endif
188
189
#define FC_MUTEX_INIT { FC_MUTEX_IMPL_INIT }
190
typedef fc_mutex_impl_t FcMutex;
191
0
static inline void      FcMutexInit (FcMutex *m) { fc_mutex_impl_init (m); }
Unexecuted instantiation: fcpat.c:FcMutexInit
Unexecuted instantiation: fccache.c:FcMutexInit
Unexecuted instantiation: fccfg.c:FcMutexInit
Unexecuted instantiation: fccharset.c:FcMutexInit
Unexecuted instantiation: fccompat.c:FcMutexInit
Unexecuted instantiation: fcdbg.c:FcMutexInit
Unexecuted instantiation: fcdefault.c:FcMutexInit
Unexecuted instantiation: fcdir.c:FcMutexInit
Unexecuted instantiation: fcfreetype.c:FcMutexInit
Unexecuted instantiation: fcfs.c:FcMutexInit
Unexecuted instantiation: fcgenericalias.c:FcMutexInit
Unexecuted instantiation: fcptrlist.c:FcMutexInit
Unexecuted instantiation: fchash.c:FcMutexInit
Unexecuted instantiation: fcinit.c:FcMutexInit
Unexecuted instantiation: fclang.c:FcMutexInit
Unexecuted instantiation: fclist.c:FcMutexInit
Unexecuted instantiation: fcmatch.c:FcMutexInit
Unexecuted instantiation: fcmatrix.c:FcMutexInit
Unexecuted instantiation: fcname.c:FcMutexInit
Unexecuted instantiation: fcobjs.c:FcMutexInit
Unexecuted instantiation: fcrange.c:FcMutexInit
Unexecuted instantiation: fcserialize.c:FcMutexInit
Unexecuted instantiation: fcstat.c:FcMutexInit
Unexecuted instantiation: fcstr.c:FcMutexInit
Unexecuted instantiation: fcweight.c:FcMutexInit
Unexecuted instantiation: fcxml.c:FcMutexInit
Unexecuted instantiation: ftglue.c:FcMutexInit
Unexecuted instantiation: fcatomic.c:FcMutexInit
192
0
static inline void      FcMutexLock (FcMutex *m) { fc_mutex_impl_lock (m); }
Unexecuted instantiation: fcpat.c:FcMutexLock
Unexecuted instantiation: fccache.c:FcMutexLock
Unexecuted instantiation: fccfg.c:FcMutexLock
Unexecuted instantiation: fccharset.c:FcMutexLock
Unexecuted instantiation: fccompat.c:FcMutexLock
Unexecuted instantiation: fcdbg.c:FcMutexLock
Unexecuted instantiation: fcdefault.c:FcMutexLock
Unexecuted instantiation: fcdir.c:FcMutexLock
Unexecuted instantiation: fcfreetype.c:FcMutexLock
Unexecuted instantiation: fcfs.c:FcMutexLock
Unexecuted instantiation: fcgenericalias.c:FcMutexLock
Unexecuted instantiation: fcptrlist.c:FcMutexLock
Unexecuted instantiation: fchash.c:FcMutexLock
Unexecuted instantiation: fcinit.c:FcMutexLock
Unexecuted instantiation: fclang.c:FcMutexLock
Unexecuted instantiation: fclist.c:FcMutexLock
Unexecuted instantiation: fcmatch.c:FcMutexLock
Unexecuted instantiation: fcmatrix.c:FcMutexLock
Unexecuted instantiation: fcname.c:FcMutexLock
Unexecuted instantiation: fcobjs.c:FcMutexLock
Unexecuted instantiation: fcrange.c:FcMutexLock
Unexecuted instantiation: fcserialize.c:FcMutexLock
Unexecuted instantiation: fcstat.c:FcMutexLock
Unexecuted instantiation: fcstr.c:FcMutexLock
Unexecuted instantiation: fcweight.c:FcMutexLock
Unexecuted instantiation: fcxml.c:FcMutexLock
Unexecuted instantiation: ftglue.c:FcMutexLock
Unexecuted instantiation: fcatomic.c:FcMutexLock
193
0
static inline void      FcMutexUnlock (FcMutex *m) { fc_mutex_impl_unlock (m); }
Unexecuted instantiation: fcpat.c:FcMutexUnlock
Unexecuted instantiation: fccache.c:FcMutexUnlock
Unexecuted instantiation: fccfg.c:FcMutexUnlock
Unexecuted instantiation: fccharset.c:FcMutexUnlock
Unexecuted instantiation: fccompat.c:FcMutexUnlock
Unexecuted instantiation: fcdbg.c:FcMutexUnlock
Unexecuted instantiation: fcdefault.c:FcMutexUnlock
Unexecuted instantiation: fcdir.c:FcMutexUnlock
Unexecuted instantiation: fcfreetype.c:FcMutexUnlock
Unexecuted instantiation: fcfs.c:FcMutexUnlock
Unexecuted instantiation: fcgenericalias.c:FcMutexUnlock
Unexecuted instantiation: fcptrlist.c:FcMutexUnlock
Unexecuted instantiation: fchash.c:FcMutexUnlock
Unexecuted instantiation: fcinit.c:FcMutexUnlock
Unexecuted instantiation: fclang.c:FcMutexUnlock
Unexecuted instantiation: fclist.c:FcMutexUnlock
Unexecuted instantiation: fcmatch.c:FcMutexUnlock
Unexecuted instantiation: fcmatrix.c:FcMutexUnlock
Unexecuted instantiation: fcname.c:FcMutexUnlock
Unexecuted instantiation: fcobjs.c:FcMutexUnlock
Unexecuted instantiation: fcrange.c:FcMutexUnlock
Unexecuted instantiation: fcserialize.c:FcMutexUnlock
Unexecuted instantiation: fcstat.c:FcMutexUnlock
Unexecuted instantiation: fcstr.c:FcMutexUnlock
Unexecuted instantiation: fcweight.c:FcMutexUnlock
Unexecuted instantiation: fcxml.c:FcMutexUnlock
Unexecuted instantiation: ftglue.c:FcMutexUnlock
Unexecuted instantiation: fcatomic.c:FcMutexUnlock
194
0
static inline void      FcMutexFinish (FcMutex *m) { fc_mutex_impl_finish (m); }
Unexecuted instantiation: fcpat.c:FcMutexFinish
Unexecuted instantiation: fccache.c:FcMutexFinish
Unexecuted instantiation: fccfg.c:FcMutexFinish
Unexecuted instantiation: fccharset.c:FcMutexFinish
Unexecuted instantiation: fccompat.c:FcMutexFinish
Unexecuted instantiation: fcdbg.c:FcMutexFinish
Unexecuted instantiation: fcdefault.c:FcMutexFinish
Unexecuted instantiation: fcdir.c:FcMutexFinish
Unexecuted instantiation: fcfreetype.c:FcMutexFinish
Unexecuted instantiation: fcfs.c:FcMutexFinish
Unexecuted instantiation: fcgenericalias.c:FcMutexFinish
Unexecuted instantiation: fcptrlist.c:FcMutexFinish
Unexecuted instantiation: fchash.c:FcMutexFinish
Unexecuted instantiation: fcinit.c:FcMutexFinish
Unexecuted instantiation: fclang.c:FcMutexFinish
Unexecuted instantiation: fclist.c:FcMutexFinish
Unexecuted instantiation: fcmatch.c:FcMutexFinish
Unexecuted instantiation: fcmatrix.c:FcMutexFinish
Unexecuted instantiation: fcname.c:FcMutexFinish
Unexecuted instantiation: fcobjs.c:FcMutexFinish
Unexecuted instantiation: fcrange.c:FcMutexFinish
Unexecuted instantiation: fcserialize.c:FcMutexFinish
Unexecuted instantiation: fcstat.c:FcMutexFinish
Unexecuted instantiation: fcstr.c:FcMutexFinish
Unexecuted instantiation: fcweight.c:FcMutexFinish
Unexecuted instantiation: fcxml.c:FcMutexFinish
Unexecuted instantiation: ftglue.c:FcMutexFinish
Unexecuted instantiation: fcatomic.c:FcMutexFinish
195
196
#define FC_RWLOCK_INIT { FC_RWLOCK_IMPL_INIT }
197
typedef fc_rwlock_impl_t FcRwLock;
198
0
static inline void       FcRwLockInit (FcRwLock *l) { fc_rwlock_impl_init (l); }
Unexecuted instantiation: fcpat.c:FcRwLockInit
Unexecuted instantiation: fccache.c:FcRwLockInit
Unexecuted instantiation: fccfg.c:FcRwLockInit
Unexecuted instantiation: fccharset.c:FcRwLockInit
Unexecuted instantiation: fccompat.c:FcRwLockInit
Unexecuted instantiation: fcdbg.c:FcRwLockInit
Unexecuted instantiation: fcdefault.c:FcRwLockInit
Unexecuted instantiation: fcdir.c:FcRwLockInit
Unexecuted instantiation: fcfreetype.c:FcRwLockInit
Unexecuted instantiation: fcfs.c:FcRwLockInit
Unexecuted instantiation: fcgenericalias.c:FcRwLockInit
Unexecuted instantiation: fcptrlist.c:FcRwLockInit
Unexecuted instantiation: fchash.c:FcRwLockInit
Unexecuted instantiation: fcinit.c:FcRwLockInit
Unexecuted instantiation: fclang.c:FcRwLockInit
Unexecuted instantiation: fclist.c:FcRwLockInit
Unexecuted instantiation: fcmatch.c:FcRwLockInit
Unexecuted instantiation: fcmatrix.c:FcRwLockInit
Unexecuted instantiation: fcname.c:FcRwLockInit
Unexecuted instantiation: fcobjs.c:FcRwLockInit
Unexecuted instantiation: fcrange.c:FcRwLockInit
Unexecuted instantiation: fcserialize.c:FcRwLockInit
Unexecuted instantiation: fcstat.c:FcRwLockInit
Unexecuted instantiation: fcstr.c:FcRwLockInit
Unexecuted instantiation: fcweight.c:FcRwLockInit
Unexecuted instantiation: fcxml.c:FcRwLockInit
Unexecuted instantiation: ftglue.c:FcRwLockInit
Unexecuted instantiation: fcatomic.c:FcRwLockInit
199
0
static inline void       FcRwLockReadLock (FcRwLock *l) { fc_rwlock_impl_rdlock (l); }
Unexecuted instantiation: fcpat.c:FcRwLockReadLock
Unexecuted instantiation: fccache.c:FcRwLockReadLock
Unexecuted instantiation: fccfg.c:FcRwLockReadLock
Unexecuted instantiation: fccharset.c:FcRwLockReadLock
Unexecuted instantiation: fccompat.c:FcRwLockReadLock
Unexecuted instantiation: fcdbg.c:FcRwLockReadLock
Unexecuted instantiation: fcdefault.c:FcRwLockReadLock
Unexecuted instantiation: fcdir.c:FcRwLockReadLock
Unexecuted instantiation: fcfreetype.c:FcRwLockReadLock
Unexecuted instantiation: fcfs.c:FcRwLockReadLock
Unexecuted instantiation: fcgenericalias.c:FcRwLockReadLock
Unexecuted instantiation: fcptrlist.c:FcRwLockReadLock
Unexecuted instantiation: fchash.c:FcRwLockReadLock
Unexecuted instantiation: fcinit.c:FcRwLockReadLock
Unexecuted instantiation: fclang.c:FcRwLockReadLock
Unexecuted instantiation: fclist.c:FcRwLockReadLock
Unexecuted instantiation: fcmatch.c:FcRwLockReadLock
Unexecuted instantiation: fcmatrix.c:FcRwLockReadLock
Unexecuted instantiation: fcname.c:FcRwLockReadLock
Unexecuted instantiation: fcobjs.c:FcRwLockReadLock
Unexecuted instantiation: fcrange.c:FcRwLockReadLock
Unexecuted instantiation: fcserialize.c:FcRwLockReadLock
Unexecuted instantiation: fcstat.c:FcRwLockReadLock
Unexecuted instantiation: fcstr.c:FcRwLockReadLock
Unexecuted instantiation: fcweight.c:FcRwLockReadLock
Unexecuted instantiation: fcxml.c:FcRwLockReadLock
Unexecuted instantiation: ftglue.c:FcRwLockReadLock
Unexecuted instantiation: fcatomic.c:FcRwLockReadLock
200
0
static inline void       FcRwLockWriteLock (FcRwLock *l) { fc_rwlock_impl_wrlock (l); }
Unexecuted instantiation: fcpat.c:FcRwLockWriteLock
Unexecuted instantiation: fccache.c:FcRwLockWriteLock
Unexecuted instantiation: fccfg.c:FcRwLockWriteLock
Unexecuted instantiation: fccharset.c:FcRwLockWriteLock
Unexecuted instantiation: fccompat.c:FcRwLockWriteLock
Unexecuted instantiation: fcdbg.c:FcRwLockWriteLock
Unexecuted instantiation: fcdefault.c:FcRwLockWriteLock
Unexecuted instantiation: fcdir.c:FcRwLockWriteLock
Unexecuted instantiation: fcfreetype.c:FcRwLockWriteLock
Unexecuted instantiation: fcfs.c:FcRwLockWriteLock
Unexecuted instantiation: fcgenericalias.c:FcRwLockWriteLock
Unexecuted instantiation: fcptrlist.c:FcRwLockWriteLock
Unexecuted instantiation: fchash.c:FcRwLockWriteLock
Unexecuted instantiation: fcinit.c:FcRwLockWriteLock
Unexecuted instantiation: fclang.c:FcRwLockWriteLock
Unexecuted instantiation: fclist.c:FcRwLockWriteLock
Unexecuted instantiation: fcmatch.c:FcRwLockWriteLock
Unexecuted instantiation: fcmatrix.c:FcRwLockWriteLock
Unexecuted instantiation: fcname.c:FcRwLockWriteLock
Unexecuted instantiation: fcobjs.c:FcRwLockWriteLock
Unexecuted instantiation: fcrange.c:FcRwLockWriteLock
Unexecuted instantiation: fcserialize.c:FcRwLockWriteLock
Unexecuted instantiation: fcstat.c:FcRwLockWriteLock
Unexecuted instantiation: fcstr.c:FcRwLockWriteLock
Unexecuted instantiation: fcweight.c:FcRwLockWriteLock
Unexecuted instantiation: fcxml.c:FcRwLockWriteLock
Unexecuted instantiation: ftglue.c:FcRwLockWriteLock
Unexecuted instantiation: fcatomic.c:FcRwLockWriteLock
201
0
static inline void       FcRwLockUnlockRead (FcRwLock *l) { fc_rwlock_impl_unlock_rd (l); }
Unexecuted instantiation: fcpat.c:FcRwLockUnlockRead
Unexecuted instantiation: fccache.c:FcRwLockUnlockRead
Unexecuted instantiation: fccfg.c:FcRwLockUnlockRead
Unexecuted instantiation: fccharset.c:FcRwLockUnlockRead
Unexecuted instantiation: fccompat.c:FcRwLockUnlockRead
Unexecuted instantiation: fcdbg.c:FcRwLockUnlockRead
Unexecuted instantiation: fcdefault.c:FcRwLockUnlockRead
Unexecuted instantiation: fcdir.c:FcRwLockUnlockRead
Unexecuted instantiation: fcfreetype.c:FcRwLockUnlockRead
Unexecuted instantiation: fcfs.c:FcRwLockUnlockRead
Unexecuted instantiation: fcgenericalias.c:FcRwLockUnlockRead
Unexecuted instantiation: fcptrlist.c:FcRwLockUnlockRead
Unexecuted instantiation: fchash.c:FcRwLockUnlockRead
Unexecuted instantiation: fcinit.c:FcRwLockUnlockRead
Unexecuted instantiation: fclang.c:FcRwLockUnlockRead
Unexecuted instantiation: fclist.c:FcRwLockUnlockRead
Unexecuted instantiation: fcmatch.c:FcRwLockUnlockRead
Unexecuted instantiation: fcmatrix.c:FcRwLockUnlockRead
Unexecuted instantiation: fcname.c:FcRwLockUnlockRead
Unexecuted instantiation: fcobjs.c:FcRwLockUnlockRead
Unexecuted instantiation: fcrange.c:FcRwLockUnlockRead
Unexecuted instantiation: fcserialize.c:FcRwLockUnlockRead
Unexecuted instantiation: fcstat.c:FcRwLockUnlockRead
Unexecuted instantiation: fcstr.c:FcRwLockUnlockRead
Unexecuted instantiation: fcweight.c:FcRwLockUnlockRead
Unexecuted instantiation: fcxml.c:FcRwLockUnlockRead
Unexecuted instantiation: ftglue.c:FcRwLockUnlockRead
Unexecuted instantiation: fcatomic.c:FcRwLockUnlockRead
202
0
static inline void       FcRwLockUnlockWrite (FcRwLock *l) { fc_rwlock_impl_unlock_wr (l); }
Unexecuted instantiation: fcpat.c:FcRwLockUnlockWrite
Unexecuted instantiation: fccache.c:FcRwLockUnlockWrite
Unexecuted instantiation: fccfg.c:FcRwLockUnlockWrite
Unexecuted instantiation: fccharset.c:FcRwLockUnlockWrite
Unexecuted instantiation: fccompat.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcdbg.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcdefault.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcdir.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcfreetype.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcfs.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcgenericalias.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcptrlist.c:FcRwLockUnlockWrite
Unexecuted instantiation: fchash.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcinit.c:FcRwLockUnlockWrite
Unexecuted instantiation: fclang.c:FcRwLockUnlockWrite
Unexecuted instantiation: fclist.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcmatch.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcmatrix.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcname.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcobjs.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcrange.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcserialize.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcstat.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcstr.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcweight.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcxml.c:FcRwLockUnlockWrite
Unexecuted instantiation: ftglue.c:FcRwLockUnlockWrite
Unexecuted instantiation: fcatomic.c:FcRwLockUnlockWrite
203
0
static inline void       FcRwLockFinish (FcRwLock *l) { fc_rwlock_impl_finish (l); }
Unexecuted instantiation: fcpat.c:FcRwLockFinish
Unexecuted instantiation: fccache.c:FcRwLockFinish
Unexecuted instantiation: fccfg.c:FcRwLockFinish
Unexecuted instantiation: fccharset.c:FcRwLockFinish
Unexecuted instantiation: fccompat.c:FcRwLockFinish
Unexecuted instantiation: fcdbg.c:FcRwLockFinish
Unexecuted instantiation: fcdefault.c:FcRwLockFinish
Unexecuted instantiation: fcdir.c:FcRwLockFinish
Unexecuted instantiation: fcfreetype.c:FcRwLockFinish
Unexecuted instantiation: fcfs.c:FcRwLockFinish
Unexecuted instantiation: fcgenericalias.c:FcRwLockFinish
Unexecuted instantiation: fcptrlist.c:FcRwLockFinish
Unexecuted instantiation: fchash.c:FcRwLockFinish
Unexecuted instantiation: fcinit.c:FcRwLockFinish
Unexecuted instantiation: fclang.c:FcRwLockFinish
Unexecuted instantiation: fclist.c:FcRwLockFinish
Unexecuted instantiation: fcmatch.c:FcRwLockFinish
Unexecuted instantiation: fcmatrix.c:FcRwLockFinish
Unexecuted instantiation: fcname.c:FcRwLockFinish
Unexecuted instantiation: fcobjs.c:FcRwLockFinish
Unexecuted instantiation: fcrange.c:FcRwLockFinish
Unexecuted instantiation: fcserialize.c:FcRwLockFinish
Unexecuted instantiation: fcstat.c:FcRwLockFinish
Unexecuted instantiation: fcstr.c:FcRwLockFinish
Unexecuted instantiation: fcweight.c:FcRwLockFinish
Unexecuted instantiation: fcxml.c:FcRwLockFinish
Unexecuted instantiation: ftglue.c:FcRwLockFinish
Unexecuted instantiation: fcatomic.c:FcRwLockFinish
204
205
#endif /* _FCMUTEX_H_ */