mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Switching the concurrency runtime to use the common SWIFT_STDLIB_TRACING to control whether the concurrency runtime enables tracing. The old process required passing bot the `SWIFT_STDLIB_TRACING` and `SWIFT_STDLIB_CONCURRENCY_TRACING` macro to the concurrency build or it would fail to build. It's not clear that there are any environments where it is desirable for swiftCore to have tracing enabled and not have swift_Concurrency tracing enabled or vice versa. Replacing the concurrency-specific macro with a single common macro. If it is desirable, we can teach the build system to avoid passing `SWIFT_STDLIB_TRACING` to a specific target if an option is not set. rdar://165777240
53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
//===--- TracingSignpost.cpp - Tracing with the signpost API -------*- C++ -*-//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Concurrency tracing implemented with the os_signpost API.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#if SWIFT_STDLIB_TRACING
|
|
|
|
#include "TracingSignpost.h"
|
|
#include <stdio.h>
|
|
|
|
#define SWIFT_LOG_CONCURRENCY_SUBSYSTEM "com.apple.swift.concurrency"
|
|
#define SWIFT_LOG_ACTOR_CATEGORY "Actor"
|
|
#define SWIFT_LOG_TASK_CATEGORY "Task"
|
|
|
|
namespace swift {
|
|
namespace concurrency {
|
|
namespace trace {
|
|
|
|
os_log_t ActorLog;
|
|
os_log_t TaskLog;
|
|
swift::once_t LogsToken;
|
|
bool TracingEnabled;
|
|
|
|
void setupLogs(void *unused) {
|
|
if (!swift::runtime::trace::shouldEnableTracing()) {
|
|
TracingEnabled = false;
|
|
return;
|
|
}
|
|
|
|
TracingEnabled = true;
|
|
ActorLog = os_log_create(SWIFT_LOG_CONCURRENCY_SUBSYSTEM,
|
|
SWIFT_LOG_ACTOR_CATEGORY);
|
|
TaskLog = os_log_create(SWIFT_LOG_CONCURRENCY_SUBSYSTEM,
|
|
SWIFT_LOG_TASK_CATEGORY);
|
|
}
|
|
|
|
} // namespace trace
|
|
} // namespace concurrency
|
|
} // namespace swift
|
|
|
|
#endif
|