@@ -17,14 +17,16 @@ import Glibc
17
17
import Musl
18
18
#elseif canImport(WinSDK)
19
19
import WinSDK
20
+ #elseif canImport(Bionic)
21
+ import Bionic
20
22
#else
21
23
#error("Unsupported platform")
22
24
#endif
23
25
24
26
internal struct Lock {
25
27
#if canImport(Darwin)
26
28
typealias Primitive = os_unfair_lock
27
- #elseif canImport(Glibc) || canImport(Musl)
29
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
28
30
typealias Primitive = pthread_mutex_t
29
31
#elseif canImport(WinSDK)
30
32
typealias Primitive = SRWLOCK
@@ -42,7 +44,7 @@ internal struct Lock {
42
44
fileprivate static func initialize( _ platformLock: PlatformLock ) {
43
45
#if canImport(Darwin)
44
46
platformLock. initialize ( to: os_unfair_lock ( ) )
45
- #elseif canImport(Glibc) || canImport(Musl)
47
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
46
48
let result = pthread_mutex_init ( platformLock, nil )
47
49
precondition ( result == 0 , " pthread_mutex_init failed " )
48
50
#elseif canImport(WinSDK)
@@ -53,7 +55,7 @@ internal struct Lock {
53
55
}
54
56
55
57
fileprivate static func deinitialize( _ platformLock: PlatformLock ) {
56
- #if canImport(Glibc) || canImport(Musl)
58
+ #if canImport(Glibc) || canImport(Musl) || canImport(Bionic)
57
59
let result = pthread_mutex_destroy ( platformLock)
58
60
precondition ( result == 0 , " pthread_mutex_destroy failed " )
59
61
#endif
@@ -63,7 +65,7 @@ internal struct Lock {
63
65
fileprivate static func lock( _ platformLock: PlatformLock ) {
64
66
#if canImport(Darwin)
65
67
os_unfair_lock_lock ( platformLock)
66
- #elseif canImport(Glibc) || canImport(Musl)
68
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
67
69
pthread_mutex_lock ( platformLock)
68
70
#elseif canImport(WinSDK)
69
71
AcquireSRWLockExclusive ( platformLock)
@@ -75,7 +77,7 @@ internal struct Lock {
75
77
fileprivate static func unlock( _ platformLock: PlatformLock ) {
76
78
#if canImport(Darwin)
77
79
os_unfair_lock_unlock ( platformLock)
78
- #elseif canImport(Glibc) || canImport(Musl)
80
+ #elseif canImport(Glibc) || canImport(Musl) || canImport(Bionic)
79
81
let result = pthread_mutex_unlock ( platformLock)
80
82
precondition ( result == 0 , " pthread_mutex_unlock failed " )
81
83
#elseif canImport(WinSDK)
0 commit comments