Skip to content

Commit ca7070f

Browse files
authored
Implement LockedState for Musl (#1101) (#1104)
1 parent ae38607 commit ca7070f

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Sources/FoundationEssentials/LockedState.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,19 @@ package struct LockedState<State> {
4646
fileprivate static func initialize(_ platformLock: PlatformLock) {
4747
#if canImport(os)
4848
platformLock.initialize(to: os_unfair_lock())
49-
#elseif canImport(Bionic) || canImport(Glibc)
49+
#elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
5050
pthread_mutex_init(platformLock, nil)
5151
#elseif canImport(WinSDK)
5252
InitializeSRWLock(platformLock)
5353
#elseif os(WASI)
5454
// no-op
55+
#else
56+
#error("LockedState._Lock.initialize is unimplemented on this platform")
5557
#endif
5658
}
5759

5860
fileprivate static func deinitialize(_ platformLock: PlatformLock) {
59-
#if canImport(Bionic) || canImport(Glibc)
61+
#if canImport(Bionic) || canImport(Glibc) || canImport(Musl)
6062
pthread_mutex_destroy(platformLock)
6163
#endif
6264
platformLock.deinitialize(count: 1)
@@ -65,24 +67,28 @@ package struct LockedState<State> {
6567
static fileprivate func lock(_ platformLock: PlatformLock) {
6668
#if canImport(os)
6769
os_unfair_lock_lock(platformLock)
68-
#elseif canImport(Bionic) || canImport(Glibc)
70+
#elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
6971
pthread_mutex_lock(platformLock)
7072
#elseif canImport(WinSDK)
7173
AcquireSRWLockExclusive(platformLock)
7274
#elseif os(WASI)
7375
// no-op
76+
#else
77+
#error("LockedState._Lock.lock is unimplemented on this platform")
7478
#endif
7579
}
7680

7781
static fileprivate func unlock(_ platformLock: PlatformLock) {
7882
#if canImport(os)
7983
os_unfair_lock_unlock(platformLock)
80-
#elseif canImport(Bionic) || canImport(Glibc)
84+
#elseif canImport(Bionic) || canImport(Glibc) || canImport(Musl)
8185
pthread_mutex_unlock(platformLock)
8286
#elseif canImport(WinSDK)
8387
ReleaseSRWLockExclusive(platformLock)
8488
#elseif os(WASI)
8589
// no-op
90+
#else
91+
#error("LockedState._Lock.unlock is unimplemented on this platform")
8692
#endif
8793
}
8894
}

0 commit comments

Comments
 (0)