@@ -17,14 +17,16 @@ import Glibc
1717import Musl
1818#elseif canImport(WinSDK)
1919import WinSDK
20+ #elseif canImport(Bionic)
21+ import Bionic
2022#else
2123#error("Unsupported platform")
2224#endif
2325
2426internal struct Lock {
2527#if canImport(Darwin)
2628 typealias Primitive = os_unfair_lock
27- #elseif canImport(Glibc) || canImport(Musl)
29+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
2830 typealias Primitive = pthread_mutex_t
2931#elseif canImport(WinSDK)
3032 typealias Primitive = SRWLOCK
@@ -42,7 +44,7 @@ internal struct Lock {
4244 fileprivate static func initialize( _ platformLock: PlatformLock ) {
4345#if canImport(Darwin)
4446 platformLock. initialize ( to: os_unfair_lock ( ) )
45- #elseif canImport(Glibc) || canImport(Musl)
47+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
4648 let result = pthread_mutex_init ( platformLock, nil )
4749 precondition ( result == 0 , " pthread_mutex_init failed " )
4850#elseif canImport(WinSDK)
@@ -53,7 +55,7 @@ internal struct Lock {
5355 }
5456
5557 fileprivate static func deinitialize( _ platformLock: PlatformLock ) {
56- #if canImport(Glibc) || canImport(Musl)
58+ #if canImport(Glibc) || canImport(Musl) || canImport(Bionic)
5759 let result = pthread_mutex_destroy ( platformLock)
5860 precondition ( result == 0 , " pthread_mutex_destroy failed " )
5961#endif
@@ -63,7 +65,7 @@ internal struct Lock {
6365 fileprivate static func lock( _ platformLock: PlatformLock ) {
6466#if canImport(Darwin)
6567 os_unfair_lock_lock ( platformLock)
66- #elseif canImport(Glibc) || canImport(Musl)
68+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
6769 pthread_mutex_lock ( platformLock)
6870#elseif canImport(WinSDK)
6971 AcquireSRWLockExclusive ( platformLock)
@@ -75,7 +77,7 @@ internal struct Lock {
7577 fileprivate static func unlock( _ platformLock: PlatformLock ) {
7678#if canImport(Darwin)
7779 os_unfair_lock_unlock ( platformLock)
78- #elseif canImport(Glibc) || canImport(Musl)
80+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
7981 let result = pthread_mutex_unlock ( platformLock)
8082 precondition ( result == 0 , " pthread_mutex_unlock failed " )
8183#elseif canImport(WinSDK)
0 commit comments