@@ -226,7 +226,7 @@ open class Thread : NSObject {
226
226
get { _attrStorage. value }
227
227
set { _attrStorage. value = newValue }
228
228
}
229
- #elseif CYGWIN || os(OpenBSD)
229
+ #elseif CYGWIN || os(OpenBSD) || os(FreeBSD)
230
230
internal var _attr : pthread_attr_t ? = nil
231
231
#else
232
232
internal var _attr = pthread_attr_t ( )
@@ -266,7 +266,7 @@ open class Thread : NSObject {
266
266
_status = . finished
267
267
return
268
268
}
269
- #if CYGWIN || os(OpenBSD)
269
+ #if CYGWIN || os(OpenBSD) || os(FreeBSD)
270
270
if let attr = self . _attr {
271
271
_thread = self . withRetainedReference {
272
272
return _CFThreadCreate ( attr, NSThreadStart, $0)
@@ -390,6 +390,8 @@ open class Thread : NSObject {
390
390
#elseif os(Windows)
391
391
let count = RtlCaptureStackBackTrace ( 0 , DWORD ( maxSupportedStackDepth) ,
392
392
addrs, nil )
393
+ #elseif os(FreeBSD)
394
+ let count = backtrace ( addrs, maxSupportedStackDepth)
393
395
#else
394
396
let count = backtrace ( addrs, Int32 ( maxSupportedStackDepth) )
395
397
#endif
@@ -451,7 +453,12 @@ open class Thread : NSObject {
451
453
#else
452
454
return backtraceAddresses ( { ( addrs, count) in
453
455
var symbols : [ String ] = [ ]
454
- if let bs = backtrace_symbols ( addrs, Int32 ( count) ) {
456
+ #if os(FreeBSD)
457
+ let bs = backtrace_symbols ( addrs, count)
458
+ #else
459
+ let bs = backtrace_symbols ( addrs, Int32 ( count) )
460
+ #endif
461
+ if let bs {
455
462
symbols = UnsafeBufferPointer ( start: bs, count: count) . map {
456
463
guard let symbol = $0 else {
457
464
return " <null> "
0 commit comments