Skip to content

Commit 0a2103e

Browse files
committed
port PrivatePthreadExtras to all targets
1 parent 38ba90b commit 0a2103e

14 files changed

+240
-337
lines changed

stdlib/private/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
33
endif()
44

55
if(SWIFT_BUILD_SDK_OVERLAY)
6-
# SwiftPrivatePthreadExtras makes use of Darwin/Glibc, which is part of the
7-
# SDK overlay. It can't be built separately from the SDK overlay.
86
add_subdirectory(StdlibUnittest)
97
add_subdirectory(StdlibUnicodeUnittest)
108
add_subdirectory(StdlibCollectionUnittest)
119
add_subdirectory(SwiftPrivateLibcExtras)
12-
add_subdirectory(SwiftPrivatePthreadExtras)
10+
# SwiftPrivateThreadExtras makes use of Darwin/glibc/MSVCRT, which is part of the
11+
# SDK overlay. It can't be built separately from the SDK overlay.
12+
add_subdirectory(SwiftPrivateThreadExtras)
1313

1414
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
1515
add_subdirectory(StdlibUnittestFoundationExtras)

stdlib/private/StdlibUnittest/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ add_swift_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STD
3333
TypeIndexed.swift
3434
GetOSVersion.mm
3535

36-
SWIFT_MODULE_DEPENDS SwiftPrivate SwiftPrivatePthreadExtras SwiftPrivateLibcExtras
36+
SWIFT_MODULE_DEPENDS SwiftPrivate SwiftPrivateThreadExtras SwiftPrivateLibcExtras
3737
SWIFT_MODULE_DEPENDS_IOS Darwin Foundation
3838
SWIFT_MODULE_DEPENDS_OSX Darwin Foundation
3939
SWIFT_MODULE_DEPENDS_TVOS Darwin Foundation

stdlib/private/StdlibUnittest/RaceTest.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
import SwiftPrivate
4040
import SwiftPrivateLibcExtras
41-
import SwiftPrivatePthreadExtras
41+
import SwiftPrivateThreadExtras
4242
#if os(macOS) || os(iOS)
4343
import Darwin
4444
#elseif os(Linux) || os(FreeBSD) || os(PS4) || os(Android) || os(Cygwin) || os(Haiku)
@@ -394,7 +394,7 @@ class _RaceTestSharedState<RT : RaceTestWithPerTrialData> {
394394
var racingThreadCount: Int
395395
var stopNow = _stdlib_AtomicInt(0)
396396

397-
var trialBarrier: _stdlib_Barrier
397+
var trialBarrier: _stdlib_thread_barrier
398398
var trialSpinBarrier: _stdlib_AtomicInt = _stdlib_AtomicInt()
399399

400400
var raceData: [RT.RaceData] = []
@@ -404,7 +404,10 @@ class _RaceTestSharedState<RT : RaceTestWithPerTrialData> {
404404

405405
init(racingThreadCount: Int) {
406406
self.racingThreadCount = racingThreadCount
407-
self.trialBarrier = _stdlib_Barrier(threadCount: racingThreadCount + 1)
407+
guard let barrier = _stdlib_thread_barrier(threadCount: racingThreadCount + 1) else {
408+
fatalError("")
409+
}
410+
self.trialBarrier = barrier
408411

409412
self.workerStates.reserveCapacity(racingThreadCount)
410413
for _ in 0..<racingThreadCount {
@@ -600,43 +603,40 @@ public func runRaceTest<RT : RaceTestWithPerTrialData>(
600603
_ = timeoutReached.fetchAndAdd(1)
601604
}
602605

603-
var testTids = [pthread_t]()
604-
var alarmTid: pthread_t
606+
var testTids = [_stdlib_thread_t]()
607+
var alarmTid: _stdlib_thread_t
605608

606609
// Create the master thread.
607610
do {
608-
let (ret, tid) = _stdlib_pthread_create_block(
609-
nil, masterThreadBody, ())
611+
let (ret, tid) = _stdlib_thread_create_block(masterThreadBody, ())
610612
expectEqual(0, ret)
611613
testTids.append(tid!)
612614
}
613615

614616
// Create racing threads.
615617
for i in 0..<racingThreadCount {
616-
let (ret, tid) = _stdlib_pthread_create_block(
617-
nil, racingThreadBody, i)
618+
let (ret, tid) = _stdlib_thread_create_block(racingThreadBody, i)
618619
expectEqual(0, ret)
619620
testTids.append(tid!)
620621
}
621622

622623
// Create the alarm thread that enforces the timeout.
623624
do {
624-
let (ret, tid) = _stdlib_pthread_create_block(
625-
nil, alarmThreadBody, ())
625+
let (ret, tid) = _stdlib_thread_create_block(alarmThreadBody, ())
626626
expectEqual(0, ret)
627627
alarmTid = tid!
628628
}
629629

630630
// Join all testing threads.
631631
for tid in testTids {
632-
let (ret, _) = _stdlib_pthread_join(tid, Void.self)
632+
let (ret, _) = _stdlib_thread_join(tid, Void.self)
633633
expectEqual(0, ret)
634634
}
635635

636636
// Tell the alarm thread to stop if it hasn't already, then join it.
637637
do {
638638
alarmTimer.wake()
639-
let (ret, _) = _stdlib_pthread_join(alarmTid, Void.self)
639+
let (ret, _) = _stdlib_thread_join(alarmTid, Void.self)
640640
expectEqual(0, ret)
641641
}
642642

stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ from gyb_stdlib_unittest_support import TRACE, stackTrace, trace
1515
}%
1616

1717
import SwiftPrivate
18-
import SwiftPrivatePthreadExtras
18+
import SwiftPrivateThreadExtras
1919
import SwiftPrivateLibcExtras
2020

2121
#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS)
2222
import Darwin
2323
#elseif os(Linux) || os(FreeBSD) || os(PS4) || os(Android) || os(Cygwin) || os(Haiku)
2424
import Glibc
25+
#elseif os(Windows)
26+
import MSVCRT
2527
#endif
2628

2729
#if _runtime(_ObjC)

stdlib/private/SwiftPrivatePthreadExtras/CMakeLists.txt

Lines changed: 0 additions & 18 deletions
This file was deleted.

stdlib/private/SwiftPrivatePthreadExtras/PthreadBarriers.swift

Lines changed: 0 additions & 136 deletions
This file was deleted.

0 commit comments

Comments
 (0)