diff --git a/base/observer_list_threadsafe.cc b/base/observer_list_threadsafe.cc index 76be54bb7d6..e3022514a65 100644 --- a/base/observer_list_threadsafe.cc +++ b/base/observer_list_threadsafe.cc @@ -7,7 +7,7 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) -#include "starboard/once.h" +#include #endif namespace base { @@ -17,7 +17,7 @@ namespace internal { namespace { -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -28,7 +28,7 @@ void InitThreadLocalKey() { } void ObserverListThreadSafeBase::EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/run_loop.cc b/base/run_loop.cc index 0fe12239f6a..644366bb8dc 100644 --- a/base/run_loop.cc +++ b/base/run_loop.cc @@ -16,7 +16,8 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) -#include "starboard/once.h" +#include + #include "starboard/thread.h" #endif @@ -25,7 +26,7 @@ namespace base { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_delegate_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_delegate_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_delegate_key = kSbThreadLocalKeyInvalid; void InitThreadLocalDelegateKey() { @@ -34,7 +35,7 @@ void InitThreadLocalDelegateKey() { } void EnsureThreadLocalDelegateKeyInited() { - SbOnce(&s_once_delegate_flag, InitThreadLocalDelegateKey); + pthread_once(&s_once_delegate_flag, InitThreadLocalDelegateKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_delegate_key)); } @@ -43,7 +44,7 @@ RunLoop::Delegate* GetDelegate() { SbThreadGetLocalValue(s_thread_local_delegate_key)); } -ABSL_CONST_INIT SbOnceControl s_once_timeout_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_timeout_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_timeout_key = kSbThreadLocalKeyInvalid; void InitThreadLocalTimeoutKey() { @@ -52,7 +53,7 @@ void InitThreadLocalTimeoutKey() { } void EnsureThreadLocalTimeoutKeyInited() { - SbOnce(&s_once_timeout_flag, InitThreadLocalTimeoutKey); + pthread_once(&s_once_timeout_flag, InitThreadLocalTimeoutKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_timeout_key)); } diff --git a/base/sampling_heap_profiler/sampling_heap_profiler.cc b/base/sampling_heap_profiler/sampling_heap_profiler.cc index 5b405dd760f..f192f817e6c 100644 --- a/base/sampling_heap_profiler/sampling_heap_profiler.cc +++ b/base/sampling_heap_profiler/sampling_heap_profiler.cc @@ -39,8 +39,9 @@ #endif #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -95,7 +96,7 @@ const char* GetAndLeakThreadName() { const char* UpdateAndGetThreadName(const char* name) { #if defined(STARBOARD) - static SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; + static pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; static SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; auto InitThreadLocalKey = [](){ @@ -103,7 +104,7 @@ const char* UpdateAndGetThreadName(const char* name) { DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); }; - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); const char* thread_name = static_cast(SbThreadGetLocalValue(s_thread_local_key)); diff --git a/base/sequence_token.cc b/base/sequence_token.cc index a74dc8fedbf..66347e2df07 100644 --- a/base/sequence_token.cc +++ b/base/sequence_token.cc @@ -8,8 +8,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #include "base/logging.h" #endif @@ -23,7 +24,7 @@ base::AtomicSequenceNumber g_sequence_token_generator; base::AtomicSequenceNumber g_task_token_generator; #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_sequence_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_sequence_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_sequence_key = kSbThreadLocalKeyInvalid; @@ -33,11 +34,11 @@ void InitThreadLocalSequenceKey() { } void EnsureThreadLocalSequenceKeyInited() { - SbOnce(&s_once_sequence_flag, InitThreadLocalSequenceKey); + pthread_once(&s_once_sequence_flag, InitThreadLocalSequenceKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_sequence_key)); } -ABSL_CONST_INIT SbOnceControl s_once_set_sequence_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_set_sequence_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_sequence_set_for_thread = kSbThreadLocalKeyInvalid; void InitThreadLocalSequenceBoolKey() { @@ -46,7 +47,7 @@ void InitThreadLocalSequenceBoolKey() { } void EnsureThreadLocalSequenceBoolKeyInited() { - SbOnce(&s_once_set_sequence_flag, InitThreadLocalSequenceBoolKey); + pthread_once(&s_once_set_sequence_flag, InitThreadLocalSequenceBoolKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_sequence_set_for_thread)); } @@ -57,7 +58,7 @@ bool IsSequenceSetForThread() { : false; } -ABSL_CONST_INIT SbOnceControl s_once_task_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_task_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_task_key = kSbThreadLocalKeyInvalid; @@ -67,11 +68,11 @@ void InitThreadLocalTaskKey() { } void EnsureThreadLocalTaskKeyInited() { - SbOnce(&s_once_task_flag, InitThreadLocalTaskKey); + pthread_once(&s_once_task_flag, InitThreadLocalTaskKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_task_key)); } -ABSL_CONST_INIT SbOnceControl s_once_set_task_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_set_task_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_task_set_for_thread = kSbThreadLocalKeyInvalid; void InitThreadLocalTaskBoolKey() { @@ -80,7 +81,7 @@ void InitThreadLocalTaskBoolKey() { } void EnsureThreadLocalTaskBoolKeyInited() { - SbOnce(&s_once_set_task_flag, InitThreadLocalTaskBoolKey); + pthread_once(&s_once_set_task_flag, InitThreadLocalTaskBoolKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_task_set_for_thread)); } diff --git a/base/task/common/scoped_defer_task_posting.cc b/base/task/common/scoped_defer_task_posting.cc index 0df8df87b81..4bcc3d5a33e 100644 --- a/base/task/common/scoped_defer_task_posting.cc +++ b/base/task/common/scoped_defer_task_posting.cc @@ -8,8 +8,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -18,7 +19,7 @@ namespace base { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -27,7 +28,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/task/common/task_annotator.cc b/base/task/common/task_annotator.cc index 9c05de2c2eb..fe37d95869f 100644 --- a/base/task/common/task_annotator.cc +++ b/base/task/common/task_annotator.cc @@ -27,8 +27,9 @@ #endif #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -39,7 +40,7 @@ namespace { TaskAnnotator::ObserverForTesting* g_task_annotator_observer = nullptr; #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_task_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_task_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_task_key = kSbThreadLocalKeyInvalid; @@ -49,7 +50,7 @@ void InitThreadLocalTaskKey() { } void EnsureThreadLocalTaskKeyInited() { - SbOnce(&s_once_task_flag, InitThreadLocalTaskKey); + pthread_once(&s_once_task_flag, InitThreadLocalTaskKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_task_key)); } @@ -58,7 +59,7 @@ PendingTask* GetCurrentPendingTask() { SbThreadGetLocalValue(s_thread_local_task_key)); } -ABSL_CONST_INIT SbOnceControl s_once_hash_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_hash_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_hash_key = kSbThreadLocalKeyInvalid; @@ -68,11 +69,11 @@ void InitThreadLocalHashKey() { } void EnsureThreadLocalHashKeyInited() { - SbOnce(&s_once_hash_flag, InitThreadLocalHashKey); + pthread_once(&s_once_hash_flag, InitThreadLocalHashKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_hash_key)); } -ABSL_CONST_INIT SbOnceControl s_once_tracker_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_tracker_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_tracker_key = kSbThreadLocalKeyInvalid; @@ -82,7 +83,7 @@ void InitThreadLocalTrackerKey() { } void EnsureThreadLocalTrackerKeyInited() { - SbOnce(&s_once_tracker_flag, InitThreadLocalTrackerKey); + pthread_once(&s_once_tracker_flag, InitThreadLocalTrackerKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_tracker_key)); } #else diff --git a/base/task/scoped_set_task_priority_for_current_thread.cc b/base/task/scoped_set_task_priority_for_current_thread.cc index 74b5cb58add..4218fff4c73 100644 --- a/base/task/scoped_set_task_priority_for_current_thread.cc +++ b/base/task/scoped_set_task_priority_for_current_thread.cc @@ -8,8 +8,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -19,7 +20,7 @@ namespace internal { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -28,11 +29,11 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } -ABSL_CONST_INIT SbOnceControl s_once_set_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_set_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_set_for_thread = kSbThreadLocalKeyInvalid; void InitThreadLocalBoolKey() { @@ -41,7 +42,7 @@ void InitThreadLocalBoolKey() { } void EnsureThreadLocalBoolKeyInited() { - SbOnce(&s_once_set_flag, InitThreadLocalBoolKey); + pthread_once(&s_once_set_flag, InitThreadLocalBoolKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_set_for_thread)); } diff --git a/base/task/sequence_manager/sequence_manager_impl.cc b/base/task/sequence_manager/sequence_manager_impl.cc index 9cca2bbf578..627b98103fd 100644 --- a/base/task/sequence_manager/sequence_manager_impl.cc +++ b/base/task/sequence_manager/sequence_manager_impl.cc @@ -39,8 +39,9 @@ #include "third_party/abseil-cpp/absl/types/optional.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -49,7 +50,7 @@ namespace sequence_manager { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -58,7 +59,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/task/sequenced_task_runner.cc b/base/task/sequenced_task_runner.cc index b8f85eb0b0d..61e3ad08dea 100644 --- a/base/task/sequenced_task_runner.cc +++ b/base/task/sequenced_task_runner.cc @@ -12,8 +12,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -22,7 +23,7 @@ namespace base { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -31,7 +32,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/task/single_thread_task_runner.cc b/base/task/single_thread_task_runner.cc index f4a32391462..b6e4e27e6f7 100644 --- a/base/task/single_thread_task_runner.cc +++ b/base/task/single_thread_task_runner.cc @@ -17,8 +17,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -27,7 +28,7 @@ namespace base { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -36,7 +37,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } #else diff --git a/base/task/thread_pool/task_tracker.cc b/base/task/thread_pool/task_tracker.cc index 8e8d5a62552..550afc7ce81 100644 --- a/base/task/thread_pool/task_tracker.cc +++ b/base/task/thread_pool/task_tracker.cc @@ -35,8 +35,9 @@ #include "third_party/abseil-cpp/absl/types/optional.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -127,7 +128,7 @@ auto EmitThreadPoolTraceEventMetadata(perfetto::EventContext& ctx, } #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -136,7 +137,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/task/thread_pool/thread_group.cc b/base/task/thread_pool/thread_group.cc index 0ff3c8701df..57a15a5406b 100644 --- a/base/task/thread_pool/thread_group.cc +++ b/base/task/thread_pool/thread_group.cc @@ -20,8 +20,9 @@ #endif #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -31,7 +32,7 @@ namespace internal { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -40,7 +41,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/threading/hang_watcher.cc b/base/threading/hang_watcher.cc index 8950717be8e..a508abf1c39 100644 --- a/base/threading/hang_watcher.cc +++ b/base/threading/hang_watcher.cc @@ -33,8 +33,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -52,7 +53,7 @@ enum class LoggingLevel { kNone = 0, kUmaOnly = 1, kUmaAndCrash = 2 }; HangWatcher* g_instance = nullptr; #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -61,7 +62,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/threading/platform_thread.cc b/base/threading/platform_thread.cc index 8b87ce0268b..3fb1c78e1a9 100644 --- a/base/threading/platform_thread.cc +++ b/base/threading/platform_thread.cc @@ -12,8 +12,9 @@ #endif #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -22,7 +23,7 @@ namespace base { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -31,7 +32,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/threading/scoped_blocking_call.cc b/base/threading/scoped_blocking_call.cc index ce0b4caf26a..99f6dba2ea1 100644 --- a/base/threading/scoped_blocking_call.cc +++ b/base/threading/scoped_blocking_call.cc @@ -20,8 +20,9 @@ #include "base/auto_reset.h" #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif #endif @@ -32,7 +33,7 @@ namespace { #if DCHECK_IS_ON() #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -41,7 +42,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/threading/scoped_blocking_call_internal.cc b/base/threading/scoped_blocking_call_internal.cc index 9455e9473a9..9febe4ce648 100644 --- a/base/threading/scoped_blocking_call_internal.cc +++ b/base/threading/scoped_blocking_call_internal.cc @@ -23,7 +23,8 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) -#include "starboard/once.h" +#include + #include "starboard/thread.h" #endif @@ -33,9 +34,9 @@ namespace internal { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_observer_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_observer_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_observer_key = kSbThreadLocalKeyInvalid; -ABSL_CONST_INIT SbOnceControl s_once_call_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_call_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_call_key = kSbThreadLocalKeyInvalid; void InitThreadLocalObserverKey() { @@ -49,12 +50,12 @@ void InitThreadLocalCallKey() { } void EnsureThreadLocalObserverKeyInited() { - SbOnce(&s_once_observer_flag, InitThreadLocalObserverKey); + pthread_once(&s_once_observer_flag, InitThreadLocalObserverKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_observer_key)); } void EnsureThreadLocalCallKeyInited() { - SbOnce(&s_once_call_flag, InitThreadLocalCallKey); + pthread_once(&s_once_call_flag, InitThreadLocalCallKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_call_key)); } #else diff --git a/base/threading/sequence_local_storage_map.cc b/base/threading/sequence_local_storage_map.cc index 28c11a6634d..ef6d357238b 100644 --- a/base/threading/sequence_local_storage_map.cc +++ b/base/threading/sequence_local_storage_map.cc @@ -11,8 +11,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -22,7 +23,7 @@ namespace internal { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -31,7 +32,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/threading/thread.cc b/base/threading/thread.cc index 1aee3c58258..1d0f30d6e54 100644 --- a/base/threading/thread.cc +++ b/base/threading/thread.cc @@ -30,8 +30,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #else #if (BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_NACL)) || BUILDFLAG(IS_FUCHSIA) @@ -50,7 +51,7 @@ namespace base { namespace { #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -59,7 +60,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/base/threading/thread_id_name_manager.cc b/base/threading/thread_id_name_manager.cc index acacc03de77..89196014d0e 100644 --- a/base/threading/thread_id_name_manager.cc +++ b/base/threading/thread_id_name_manager.cc @@ -16,8 +16,9 @@ #include "third_party/abseil-cpp/absl/base/attributes.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -28,7 +29,7 @@ static const char kDefaultName[] = ""; static std::string* g_default_name; #if defined(STARBOARD) -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -37,7 +38,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/cobalt/base/startup_timer.cc b/cobalt/base/startup_timer.cc index ce4de3cca45..ff221325f8f 100644 --- a/cobalt/base/startup_timer.cc +++ b/cobalt/base/startup_timer.cc @@ -14,7 +14,7 @@ #include "cobalt/base/startup_timer.h" -#include "starboard/once.h" +#include "starboard/common/once.h" namespace base { namespace StartupTimer { diff --git a/cobalt/dom/source_buffer_metrics.cc b/cobalt/dom/source_buffer_metrics.cc index ab1e425ac40..306bf2cc020 100644 --- a/cobalt/dom/source_buffer_metrics.cc +++ b/cobalt/dom/source_buffer_metrics.cc @@ -20,9 +20,9 @@ #include "base/metrics/histogram_macros.h" #include "base/time/time.h" #include "cobalt/base/statistics.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/common/time.h" -#include "starboard/once.h" #include "starboard/types.h" namespace cobalt { diff --git a/cobalt/media/base/sbplayer_bridge.cc b/cobalt/media/base/sbplayer_bridge.cc index 96eabde4d0f..5d2bbe49845 100644 --- a/cobalt/media/base/sbplayer_bridge.cc +++ b/cobalt/media/base/sbplayer_bridge.cc @@ -28,12 +28,12 @@ #include "cobalt/media/base/format_support_query_metrics.h" #include "media/base/starboard_utils.h" #include "starboard/common/media.h" +#include "starboard/common/once.h" #include "starboard/common/player.h" #include "starboard/common/string.h" #include "starboard/configuration.h" #include "starboard/extension/player_set_max_video_input_size.h" #include "starboard/memory.h" -#include "starboard/once.h" namespace cobalt { namespace media { diff --git a/cobalt/script/v8c/v8c_engine.cc b/cobalt/script/v8c/v8c_engine.cc index 0ee1cebcd05..0bc11637903 100644 --- a/cobalt/script/v8c/v8c_engine.cc +++ b/cobalt/script/v8c/v8c_engine.cc @@ -25,7 +25,7 @@ #include "cobalt/configuration/configuration.h" #include "cobalt/script/v8c/isolate_fellowship.h" #include "cobalt/script/v8c/v8c_global_environment.h" -#include "starboard/once.h" +#include "starboard/common/once.h" namespace cobalt { namespace script { diff --git a/glimp/egl/error.cc b/glimp/egl/error.cc index b18a34da7f9..3e468628023 100644 --- a/glimp/egl/error.cc +++ b/glimp/egl/error.cc @@ -16,14 +16,15 @@ #include "glimp/egl/error.h" -#include "starboard/once.h" +#include + #include "starboard/thread.h" namespace glimp { namespace egl { namespace { -SbOnceControl s_error_once_control = SB_ONCE_INITIALIZER; +pthread_once_t s_error_once_control = PTHREAD_ONCE_INIT; SbThreadLocalKey s_error_tls_key = kSbThreadLocalKeyInvalid; void InitializeError() { @@ -32,7 +33,7 @@ void InitializeError() { } // namespace EGLint GetError() { - SbOnce(&s_error_once_control, &InitializeError); + pthread_once(&s_error_once_control, &InitializeError); void* local_value = SbThreadGetLocalValue(s_error_tls_key); if (local_value == NULL) { // The EGL error has never been set. In this case, return EGL_SUCCESS as @@ -45,7 +46,7 @@ EGLint GetError() { } void SetError(EGLint error) { - SbOnce(&s_error_once_control, &InitializeError); + pthread_once(&s_error_once_control, &InitializeError); SbThreadSetLocalValue(s_error_tls_key, reinterpret_cast(error)); } diff --git a/glimp/gles/context.cc b/glimp/gles/context.cc index 09ef100034a..e96e425ce9a 100644 --- a/glimp/gles/context.cc +++ b/glimp/gles/context.cc @@ -16,6 +16,8 @@ #include "glimp/gles/context.h" +#include + #include #include @@ -28,9 +30,9 @@ #include "glimp/gles/pixel_format.h" #include "glimp/tracing/tracing.h" #include "starboard/common/log.h" +#include "starboard/common/once.h" #include "starboard/common/pointer_arithmetic.h" #include "starboard/memory.h" -#include "starboard/once.h" namespace glimp { namespace gles { @@ -38,7 +40,7 @@ namespace gles { namespace { std::atomic_int s_context_id_counter_(0); -SbOnceControl s_tls_current_context_key_once_control = SB_ONCE_INITIALIZER; +pthread_once_t s_tls_current_context_key_once_control = PTHREAD_ONCE_INIT; SbThreadLocalKey s_tls_current_context_key = kSbThreadLocalKeyInvalid; void InitializeThreadLocalKey() { @@ -46,7 +48,8 @@ void InitializeThreadLocalKey() { } SbThreadLocalKey GetThreadLocalKey() { - SbOnce(&s_tls_current_context_key_once_control, &InitializeThreadLocalKey); + pthread_once(&s_tls_current_context_key_once_control, + &InitializeThreadLocalKey); return s_tls_current_context_key; } diff --git a/glimp/stub/egl/display_impl.cc b/glimp/stub/egl/display_impl.cc index f410fecf2eb..9e8985a304d 100644 --- a/glimp/stub/egl/display_impl.cc +++ b/glimp/stub/egl/display_impl.cc @@ -22,7 +22,7 @@ #include "glimp/stub/egl/window_surface_impl.h" #include "glimp/stub/gles/context_impl.h" #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/types.h" namespace glimp { diff --git a/net/third_party/quiche/src/quiche/common/quiche_random.cc b/net/third_party/quiche/src/quiche/common/quiche_random.cc index 1718c102dd4..98659b3968b 100644 --- a/net/third_party/quiche/src/quiche/common/quiche_random.cc +++ b/net/third_party/quiche/src/quiche/common/quiche_random.cc @@ -7,8 +7,9 @@ #include "quiche/common/platform/api/quiche_logging.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -38,7 +39,7 @@ void ThreadLocalDestructor(void* value) { } uint64_t Xoshiro256PlusPlus() { - static SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; + static pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; static SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; auto InitThreadLocalKey = [](){ @@ -46,7 +47,7 @@ uint64_t Xoshiro256PlusPlus() { DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); }; - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); uint64_t* rng_state = static_cast(SbThreadGetLocalValue(s_thread_local_key)); diff --git a/net/third_party/quiche/src/quiche/quic/core/quic_connection_context.cc b/net/third_party/quiche/src/quiche/quic/core/quic_connection_context.cc index 06976021d71..99ec6af62ba 100644 --- a/net/third_party/quiche/src/quiche/quic/core/quic_connection_context.cc +++ b/net/third_party/quiche/src/quiche/quic/core/quic_connection_context.cc @@ -8,8 +8,9 @@ #include "quiche/common/quiche_text_utils.h" #if defined(STARBOARD) +#include + #include "base/check_op.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -18,7 +19,7 @@ namespace quic { #if defined(STARBOARD) namespace { -ABSL_CONST_INIT SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +ABSL_CONST_INIT pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; ABSL_CONST_INIT SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -27,7 +28,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/starboard/CHANGELOG.md b/starboard/CHANGELOG.md index 97a7da5aa35..3b10d9d4d0c 100644 --- a/starboard/CHANGELOG.md +++ b/starboard/CHANGELOG.md @@ -9,6 +9,9 @@ since the version previous to it. ## Version 16 +### Deprecated `SbOnce` +Replaced the `SbOnce` with the POSIX `pthread_once`. + ### Deprecated `SbThreadSleep` Replaced the `SbThreadSleep` with the POSIX usleep() defined in the `` header. diff --git a/starboard/android/shared/android_media_session_client.cc b/starboard/android/shared/android_media_session_client.cc index ce5feb3abab..8f9f2bc1733 100644 --- a/starboard/android/shared/android_media_session_client.cc +++ b/starboard/android/shared/android_media_session_client.cc @@ -14,11 +14,12 @@ #include "starboard/android/shared/android_media_session_client.h" +#include + #include "starboard/android/shared/jni_env_ext.h" #include "starboard/android/shared/jni_utils.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" -#include "starboard/once.h" namespace starboard { namespace android { @@ -118,7 +119,7 @@ CobaltExtensionMediaSessionAction PlaybackStateActionToMediaSessionAction( return result; } -SbOnceControl once_flag = SB_ONCE_INITIALIZER; +pthread_once_t once_flag = PTHREAD_ONCE_INIT; SbMutex mutex; // Callbacks to the last MediaSessionClient to become active, or null. @@ -135,7 +136,7 @@ void OnceInit() { } void NativeInvokeAction(jlong action, jlong seek_ms) { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); if (g_invoke_action_callback != NULL && g_callback_context != NULL) { @@ -154,7 +155,7 @@ void NativeInvokeAction(jlong action, jlong seek_ms) { void UpdateActiveSessionPlatformPlaybackState( CobaltExtensionMediaSessionPlaybackState state) { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); if (g_update_platform_playback_state_callback != NULL && @@ -246,7 +247,7 @@ void RegisterMediaSessionCallbacks( CobaltExtensionMediaSessionInvokeActionCallback invoke_action_callback, CobaltExtensionMediaSessionUpdatePlatformPlaybackStateCallback update_platform_playback_state_callback) { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); g_callback_context = callback_context; @@ -258,7 +259,7 @@ void RegisterMediaSessionCallbacks( } void DestroyMediaSessionClientCallback() { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); g_callback_context = NULL; diff --git a/starboard/android/shared/max_output_buffers_lookup_table.cc b/starboard/android/shared/max_output_buffers_lookup_table.cc index 0d817bd6527..7ed6fb8055a 100644 --- a/starboard/android/shared/max_output_buffers_lookup_table.cc +++ b/starboard/android/shared/max_output_buffers_lookup_table.cc @@ -15,8 +15,8 @@ #include "starboard/android/shared/max_output_buffers_lookup_table.h" #include "starboard/common/log.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" -#include "starboard/once.h" namespace starboard { namespace android { diff --git a/starboard/android/shared/media_capabilities_cache.cc b/starboard/android/shared/media_capabilities_cache.cc index c35f29ae616..19d5c71d711 100644 --- a/starboard/android/shared/media_capabilities_cache.cc +++ b/starboard/android/shared/media_capabilities_cache.cc @@ -19,7 +19,7 @@ #include "starboard/android/shared/jni_utils.h" #include "starboard/android/shared/media_common.h" #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/starboard/media/key_system_supportability_cache.h" #include "starboard/shared/starboard/media/mime_supportability_cache.h" #include "starboard/thread.h" diff --git a/starboard/android/shared/system_get_locale_id.cc b/starboard/android/shared/system_get_locale_id.cc index 4cce3ef6212..42335ed094b 100644 --- a/starboard/android/shared/system_get_locale_id.cc +++ b/starboard/android/shared/system_get_locale_id.cc @@ -18,8 +18,8 @@ #include "starboard/android/shared/jni_env_ext.h" #include "starboard/android/shared/jni_utils.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" -#include "starboard/once.h" using starboard::android::shared::JniEnvExt; using starboard::android::shared::ScopedLocalJavaRef; diff --git a/starboard/android/shared/video_max_video_input_size.cc b/starboard/android/shared/video_max_video_input_size.cc index 0c731554c32..d2f666a053a 100644 --- a/starboard/android/shared/video_max_video_input_size.cc +++ b/starboard/android/shared/video_max_video_input_size.cc @@ -14,15 +14,16 @@ #include "starboard/android/shared/video_max_video_input_size.h" +#include + #include "starboard/common/log.h" -#include "starboard/once.h" #include "starboard/thread.h" namespace starboard { namespace android { namespace shared { -SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -31,7 +32,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); SB_DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/starboard/android/shared/video_window.cc b/starboard/android/shared/video_window.cc index d6998e35793..abf6437d60f 100644 --- a/starboard/android/shared/video_window.cc +++ b/starboard/android/shared/video_window.cc @@ -23,8 +23,8 @@ #include "starboard/android/shared/jni_env_ext.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/configuration.h" -#include "starboard/once.h" #include "starboard/shared/gles/gl_call.h" namespace starboard { diff --git a/starboard/client_porting/cwrappers/pow_wrapper.cc b/starboard/client_porting/cwrappers/pow_wrapper.cc index 58544c4b484..5b6cf40b5ba 100644 --- a/starboard/client_porting/cwrappers/pow_wrapper.cc +++ b/starboard/client_porting/cwrappers/pow_wrapper.cc @@ -12,17 +12,18 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include + #include #include "starboard/common/log.h" #include "starboard/extension/cwrappers.h" -#include "starboard/once.h" #include "starboard/system.h" #include "starboard/client_porting/cwrappers/pow_wrapper.h" static double (*g_pow_wrapper)(double, double) = &pow; -static SbOnceControl g_pow_wrapper_once = SB_ONCE_INITIALIZER; +static pthread_once_t g_pow_wrapper_once = PTHREAD_ONCE_INIT; static void InitPowWrapper(void) { const CobaltExtensionCWrappersApi* cwrappers = @@ -37,7 +38,7 @@ static void InitPowWrapper(void) { extern "C" { double CobaltPowWrapper(double base, double exponent) { - SbOnce(&g_pow_wrapper_once, InitPowWrapper); + pthread_once(&g_pow_wrapper_once, InitPowWrapper); return g_pow_wrapper(base, exponent); } } diff --git a/starboard/client_porting/eztime/eztime.cc b/starboard/client_porting/eztime/eztime.cc index 1d25d32c500..e9389b64f09 100644 --- a/starboard/client_porting/eztime/eztime.cc +++ b/starboard/client_porting/eztime/eztime.cc @@ -14,12 +14,13 @@ #include "starboard/client_porting/eztime/eztime.h" +#include + #include #include "starboard/client_porting/icu_init/icu_init.h" #include "starboard/common/log.h" #include "starboard/common/time.h" -#include "starboard/once.h" #include "starboard/system.h" #include "third_party/icu/source/common/unicode/udata.h" @@ -37,7 +38,7 @@ const int kMaxTimeZoneSize = 32; UChar g_timezones[kEzTimeZoneCount][kMaxTimeZoneSize]; // Once control for initializing eztime static data. -SbOnceControl g_eztime_initialization_once = SB_ONCE_INITIALIZER; +pthread_once_t g_eztime_initialization_once = PTHREAD_ONCE_INIT; // The timezone names in ASCII (UTF8-compatible) literals. This must match the // order of the EzTimeZone enum. @@ -93,7 +94,7 @@ UDate SbTimeToUDate(int64_t sb_time) { // Gets the cached TimeZone ID from |g_timezones| for the given EzTimeZone // |timezone|. const UChar* GetTimeZoneId(EzTimeZone timezone) { - SbOnce(&g_eztime_initialization_once, &Initialize); + pthread_once(&g_eztime_initialization_once, &Initialize); const UChar* timezone_id = g_timezones[timezone]; if (timezone_id[0] == 0) { return NULL; diff --git a/starboard/client_porting/icu_init/icu_init.cc b/starboard/client_porting/icu_init/icu_init.cc index d10210f7851..35cf08ddd0e 100644 --- a/starboard/client_porting/icu_init/icu_init.cc +++ b/starboard/client_porting/icu_init/icu_init.cc @@ -14,14 +14,16 @@ #include "starboard/client_porting/icu_init/icu_init.h" +#include + #include #include #include "starboard/common/log.h" +#include "starboard/common/once.h" #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/file.h" -#include "starboard/once.h" #include "starboard/system.h" #include "third_party/icu/source/common/unicode/putil.h" #include "third_party/icu/source/common/unicode/udata.h" @@ -29,7 +31,7 @@ namespace { // Once control for initializing ICU. -SbOnceControl g_initialization_once = SB_ONCE_INITIALIZER; +pthread_once_t g_initialization_once = PTHREAD_ONCE_INIT; // Initializes ICU and TimeZones so the rest of the functions will work. Should // only be called once. @@ -55,5 +57,5 @@ void Initialize() { } // namespace void IcuInit() { - SbOnce(&g_initialization_once, &Initialize); + pthread_once(&g_initialization_once, &Initialize); } diff --git a/starboard/common/metrics/stats_tracker.cc b/starboard/common/metrics/stats_tracker.cc index e9e4483af8a..1c9720fd8c7 100644 --- a/starboard/common/metrics/stats_tracker.cc +++ b/starboard/common/metrics/stats_tracker.cc @@ -14,7 +14,7 @@ #include "starboard/common/metrics/stats_tracker.h" -#include "starboard/once.h" +#include "starboard/common/once.h" namespace starboard { diff --git a/starboard/common/once.h b/starboard/common/once.h new file mode 100644 index 00000000000..4532ea52953 --- /dev/null +++ b/starboard/common/once.h @@ -0,0 +1,47 @@ +// Copyright 2024 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef STARBOARD_COMMON_ONCE_H_ +#define STARBOARD_COMMON_ONCE_H_ + +#include + +#ifdef __cplusplus +// Defines a function that will initialize the indicated type once and return +// it. This initialization is thread safe if the type being created is side +// effect free. +// +// These macros CAN ONLY BE USED IN A CC file, never in a header file. +// +// Example (in cc file): +// SB_ONCE_INITIALIZE_FUNCTION(MyClass, GetOrCreateMyClass) +// .. +// MyClass* instance = GetOrCreateMyClass(); +// MyClass* instance2 = GetOrCreateMyClass(); +// DCHECK_EQ(instance, instance2); +#define SB_ONCE_INITIALIZE_FUNCTION(Type, FunctionName) \ + Type* FunctionName() { \ + static pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; \ + static Type* s_singleton = NULL; \ + struct Local { \ + static void Init() { \ + s_singleton = new Type(); \ + } \ + }; \ + pthread_once(&s_once_flag, Local::Init); \ + return s_singleton; \ + } +#endif // __cplusplus + +#endif // STARBOARD_COMMON_ONCE_H_ diff --git a/starboard/elf_loader/exported_symbols.cc b/starboard/elf_loader/exported_symbols.cc index 450f77bb706..4aa3500dd3c 100644 --- a/starboard/elf_loader/exported_symbols.cc +++ b/starboard/elf_loader/exported_symbols.cc @@ -42,13 +42,13 @@ #include "starboard/gles.h" #if SB_API_VERSION < 16 #include "starboard/image.h" +#include "starboard/once.h" #endif // SB_API_VERSION < 16 #include "starboard/log.h" #include "starboard/memory.h" #include "starboard/memory_reporter.h" #include "starboard/microphone.h" #include "starboard/mutex.h" -#include "starboard/once.h" #include "starboard/player.h" #if SB_API_VERSION >= 16 #include "starboard/shared/modular/starboard_layer_posix_mmap_abi_wrappers.h" @@ -262,7 +262,11 @@ ExportedSymbols::ExportedSymbols() { REGISTER_SYMBOL(SbMutexCreate); REGISTER_SYMBOL(SbMutexDestroy); REGISTER_SYMBOL(SbMutexRelease); + +#if SB_API_VERSION < 16 REGISTER_SYMBOL(SbOnce); +#endif // SB_API_VERSION < 16 + REGISTER_SYMBOL(SbPlayerCreate); REGISTER_SYMBOL(SbPlayerDestroy); #if SB_API_VERSION >= 15 diff --git a/starboard/loader_app/installation_manager.cc b/starboard/loader_app/installation_manager.cc index bd4786b91ee..76639688bf8 100644 --- a/starboard/loader_app/installation_manager.cc +++ b/starboard/loader_app/installation_manager.cc @@ -32,7 +32,7 @@ #if !SB_IS(EVERGREEN_COMPATIBLE_LITE) #include "starboard/loader_app/pending_restart.h" // nogncheck #endif // !SB_IS(EVERGREEN_COMPATIBLE_LITE) -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/string.h" namespace starboard { diff --git a/starboard/nplb/extern_c_test.cc b/starboard/nplb/extern_c_test.cc index 96cc00f7ada..319b425b38a 100644 --- a/starboard/nplb/extern_c_test.cc +++ b/starboard/nplb/extern_c_test.cc @@ -43,7 +43,6 @@ extern "C" { #include "starboard/memory_reporter.h" #include "starboard/microphone.h" #include "starboard/mutex.h" -#include "starboard/once.h" #include "starboard/player.h" #include "starboard/socket.h" #include "starboard/socket_waiter.h" diff --git a/starboard/nplb/include_all.c b/starboard/nplb/include_all.c index 78ca0e89992..d083545b223 100644 --- a/starboard/nplb/include_all.c +++ b/starboard/nplb/include_all.c @@ -42,7 +42,6 @@ #include "starboard/memory_reporter.h" #include "starboard/microphone.h" #include "starboard/mutex.h" -#include "starboard/once.h" #include "starboard/player.h" #include "starboard/socket.h" #include "starboard/socket_waiter.h" diff --git a/starboard/nplb/mutex_create_test.cc b/starboard/nplb/mutex_create_test.cc index 68c96f3db1c..7ec4e1c2ca7 100644 --- a/starboard/nplb/mutex_create_test.cc +++ b/starboard/nplb/mutex_create_test.cc @@ -16,8 +16,8 @@ #include "starboard/mutex.h" #include "testing/gtest/include/gtest/gtest.h" +#include "starboard/common/once.h" #include "starboard/condition_variable.h" -#include "starboard/once.h" namespace starboard { namespace nplb { diff --git a/starboard/nplb/once_test.cc b/starboard/nplb/once_test.cc index c09d3d56564..dcecfbba6b6 100644 --- a/starboard/nplb/once_test.cc +++ b/starboard/nplb/once_test.cc @@ -14,6 +14,8 @@ // Broadcast is Sunny Day tested in most of the other SbConditionVariable tests. +#if SB_API_VERSION < 16 + #include #include "starboard/configuration_constants.h" @@ -163,3 +165,5 @@ TEST(SbOnceTest, InitializeOnceMacroFunction) { } // namespace. } // namespace nplb. } // namespace starboard. + +#endif // SB_API_VERSION < 16 diff --git a/starboard/nplb/socket_helpers.cc b/starboard/nplb/socket_helpers.cc index eabb207d96b..3df6ee25001 100644 --- a/starboard/nplb/socket_helpers.cc +++ b/starboard/nplb/socket_helpers.cc @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -27,7 +28,6 @@ #include "starboard/common/socket.h" #include "starboard/common/string.h" #include "starboard/common/time.h" -#include "starboard/once.h" #include "starboard/socket_waiter.h" #include "starboard/thread.h" #include "testing/gtest/include/gtest/gtest.h" @@ -37,7 +37,7 @@ namespace nplb { namespace { int port_number_for_tests = 0; -SbOnceControl valid_port_once_control = SB_ONCE_INITIALIZER; +pthread_once_t valid_port_once_control = PTHREAD_ONCE_INIT; void InitializePortNumberForTests() { // Create a listening socket. Let the system choose a port for us. @@ -64,7 +64,7 @@ int GetPortNumberForTests() { } return SB_SOCKET_OVERRIDE_PORT_FOR_TESTS + ++incremental; #else - SbOnce(&valid_port_once_control, &InitializePortNumberForTests); + pthread_once(&valid_port_once_control, &InitializePortNumberForTests); return port_number_for_tests; #endif } diff --git a/starboard/once.h b/starboard/once.h index 46cb1dd6135..526e028fa64 100644 --- a/starboard/once.h +++ b/starboard/once.h @@ -20,6 +20,8 @@ #ifndef STARBOARD_ONCE_H_ #define STARBOARD_ONCE_H_ +#if SB_API_VERSION < 16 + #include "starboard/export.h" #include "starboard/types.h" @@ -94,4 +96,5 @@ SB_EXPORT bool SbOnce(SbOnceControl* once_control, } #endif +#endif // SB_API_VERSION < 16 #endif // STARBOARD_ONCE_H_ diff --git a/starboard/raspi/shared/open_max/open_max_component.cc b/starboard/raspi/shared/open_max/open_max_component.cc index 3bd26619ae2..ee50a885004 100644 --- a/starboard/raspi/shared/open_max/open_max_component.cc +++ b/starboard/raspi/shared/open_max/open_max_component.cc @@ -16,8 +16,8 @@ #include +#include "starboard/common/once.h" #include "starboard/configuration.h" -#include "starboard/once.h" #include "starboard/thread.h" namespace starboard { diff --git a/starboard/raspi/shared/open_max/open_max_component_base.cc b/starboard/raspi/shared/open_max/open_max_component_base.cc index 3af019aad1c..a934052e32a 100644 --- a/starboard/raspi/shared/open_max/open_max_component_base.cc +++ b/starboard/raspi/shared/open_max/open_max_component_base.cc @@ -14,10 +14,11 @@ #include "starboard/raspi/shared/open_max/open_max_component_base.h" +#include + #include #include "starboard/configuration.h" -#include "starboard/once.h" namespace starboard { namespace raspi { @@ -32,7 +33,7 @@ const OMX_INDEXTYPE kPortTypes[] = { OMX_IndexParamAudioInit, OMX_IndexParamVideoInit, OMX_IndexParamImageInit, OMX_IndexParamOtherInit}; -SbOnceControl s_open_max_initialization_once = SB_ONCE_INITIALIZER; +pthread_once_t s_open_max_initialization_once = PTHREAD_ONCE_INIT; void DoInitializeOpenMax() { OMX_ERRORTYPE error = OMX_Init(); @@ -42,7 +43,7 @@ void DoInitializeOpenMax() { void InitializeOpenMax() { bool initialized = - SbOnce(&s_open_max_initialization_once, DoInitializeOpenMax); + pthread_once(&s_open_max_initialization_once, DoInitializeOpenMax) == 0; SB_DCHECK(initialized); } diff --git a/starboard/shared/ffmpeg/ffmpeg_dispatch.cc b/starboard/shared/ffmpeg/ffmpeg_dispatch.cc index b858a1fc250..9036ed7daad 100644 --- a/starboard/shared/ffmpeg/ffmpeg_dispatch.cc +++ b/starboard/shared/ffmpeg/ffmpeg_dispatch.cc @@ -19,7 +19,7 @@ #include "starboard/common/log.h" #include "starboard/common/mutex.h" -#include "starboard/once.h" +#include "starboard/common/once.h" namespace starboard { namespace shared { diff --git a/starboard/shared/ffmpeg/ffmpeg_dynamic_load_dispatch_impl.cc b/starboard/shared/ffmpeg/ffmpeg_dynamic_load_dispatch_impl.cc index 3648b8a34eb..7e3e5575d48 100644 --- a/starboard/shared/ffmpeg/ffmpeg_dynamic_load_dispatch_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_dynamic_load_dispatch_impl.cc @@ -16,13 +16,13 @@ // the libraries. #include +#include #include #include "starboard/common/log.h" #include "starboard/common/scoped_ptr.h" #include "starboard/common/string.h" -#include "starboard/once.h" #include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" #include "starboard/shared/starboard/lazy_initialization_internal.h" @@ -36,7 +36,7 @@ const char kAVCodecLibraryName[] = "libavcodec.so"; const char kAVFormatLibraryName[] = "libavformat.so"; const char kAVUtilLibraryName[] = "libavutil.so"; -SbOnceControl g_dynamic_load_once = SB_ONCE_INITIALIZER; +pthread_once_t g_dynamic_load_once = PTHREAD_ONCE_INIT; struct LibraryMajorVersions { int avcodec; @@ -110,7 +110,7 @@ FFMPEGDispatchImpl::~FFMPEGDispatchImpl() { // static FFMPEGDispatchImpl* FFMPEGDispatchImpl::GetInstance() { bool initialized = - SbOnce(&g_dynamic_load_once, construct_ffmpeg_dispatch_impl); + pthread_once(&g_dynamic_load_once, construct_ffmpeg_dispatch_impl) == 0; SB_DCHECK(initialized); return g_ffmpeg_dispatch_impl; } diff --git a/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc b/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc index c491f8e8e18..249d2af6813 100644 --- a/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc @@ -18,12 +18,14 @@ #include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" #include +#include + #include #include "starboard/common/log.h" +#include "starboard/common/once.h" #include "starboard/common/scoped_ptr.h" #include "starboard/common/string.h" -#include "starboard/once.h" #include "starboard/shared/ffmpeg/ffmpeg_common.h" #include "starboard/shared/starboard/lazy_initialization_internal.h" @@ -33,7 +35,7 @@ namespace ffmpeg { namespace { FFMPEGDispatch* g_ffmpeg_dispatch_impl; -SbOnceControl g_construct_ffmpeg_dispatch_once = SB_ONCE_INITIALIZER; +pthread_once_t g_construct_ffmpeg_dispatch_once = PTHREAD_ONCE_INIT; void construct_ffmpeg_dispatch() { g_ffmpeg_dispatch_impl = new FFMPEGDispatch(); @@ -126,8 +128,8 @@ FFMPEGDispatch::~FFMPEGDispatch() {} // static FFMPEGDispatch* FFMPEGDispatch::GetInstance() { - bool initialized = - SbOnce(&g_construct_ffmpeg_dispatch_once, construct_ffmpeg_dispatch); + bool initialized = pthread_once(&g_construct_ffmpeg_dispatch_once, + construct_ffmpeg_dispatch) == 0; SB_DCHECK(initialized); return g_ffmpeg_dispatch_impl; } diff --git a/starboard/shared/libfdkaac/libfdkaac_library_loader.cc b/starboard/shared/libfdkaac/libfdkaac_library_loader.cc index dac61d50d49..78cd758a967 100644 --- a/starboard/shared/libfdkaac/libfdkaac_library_loader.cc +++ b/starboard/shared/libfdkaac/libfdkaac_library_loader.cc @@ -15,7 +15,7 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/libfdkaac/libfdkaac_library_loader.h" namespace starboard { diff --git a/starboard/shared/linux/dev_input/dev_input.cc b/starboard/shared/linux/dev_input/dev_input.cc index 82055201187..c65c1adcc65 100644 --- a/starboard/shared/linux/dev_input/dev_input.cc +++ b/starboard/shared/linux/dev_input/dev_input.cc @@ -33,6 +33,7 @@ #include #include "starboard/common/log.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/configuration.h" #include "starboard/configuration_constants.h" @@ -40,7 +41,6 @@ #include "starboard/input.h" #include "starboard/key.h" #include "starboard/memory.h" -#include "starboard/once.h" #include "starboard/shared/posix/handle_eintr.h" namespace starboard { diff --git a/starboard/shared/linux/singleton.h b/starboard/shared/linux/singleton.h index cc1318b5fec..401de163557 100644 --- a/starboard/shared/linux/singleton.h +++ b/starboard/shared/linux/singleton.h @@ -20,7 +20,8 @@ #ifndef STARBOARD_SHARED_LINUX_SINGLETON_H_ #define STARBOARD_SHARED_LINUX_SINGLETON_H_ -#include "starboard/once.h" +#include + #include "starboard/shared/internal_only.h" namespace starboard { @@ -36,7 +37,7 @@ class Singleton { // initialization fails. static Type* GetOrCreateInstance() { - static SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; + static pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; static Type* s_singleton = NULL; struct Local { static void Init() { @@ -46,7 +47,7 @@ class Singleton { } } }; - SbOnce(&s_once_flag, Local::Init); + pthread_once(&s_once_flag, Local::Init); return s_singleton; } diff --git a/starboard/shared/linux/system_get_random_data.cc b/starboard/shared/linux/system_get_random_data.cc index 71d6ecf1e99..94d22a61cea 100644 --- a/starboard/shared/linux/system_get_random_data.cc +++ b/starboard/shared/linux/system_get_random_data.cc @@ -16,10 +16,11 @@ #include "starboard/system.h" +#include + #include "starboard/common/log.h" #include "starboard/common/mutex.h" #include "starboard/file.h" -#include "starboard/once.h" namespace { @@ -45,7 +46,7 @@ class URandomFile { URandomFile* g_urandom_file = NULL; // Control to initialize g_urandom_file. -SbOnceControl g_urandom_file_once = SB_ONCE_INITIALIZER; +pthread_once_t g_urandom_file_once = PTHREAD_ONCE_INIT; // Lazily initialize g_urandom_file. void InitializeRandom() { @@ -59,8 +60,8 @@ void SbSystemGetRandomData(void* out_buffer, int buffer_size) { SB_DCHECK(out_buffer); char* buffer = reinterpret_cast(out_buffer); int remaining = buffer_size; - bool once_result = SbOnce(&g_urandom_file_once, &InitializeRandom); - SB_DCHECK(once_result); + int once_result = pthread_once(&g_urandom_file_once, &InitializeRandom); + SB_DCHECK(once_result == 0); SbFile file = g_urandom_file->file(); do { diff --git a/starboard/shared/pthread/once.cc b/starboard/shared/pthread/once.cc index cb6e7434105..b0c757508c4 100644 --- a/starboard/shared/pthread/once.cc +++ b/starboard/shared/pthread/once.cc @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +#if SB_API_VERSION < 16 + #include "starboard/once.h" #include @@ -41,3 +43,5 @@ bool SbOnce(SbOnceControl* once_control, SbOnceInitRoutine init_routine) { return pthread_once(SB_PTHREAD_INTERNAL_ONCE(once_control), init_routine) == 0; } + +#endif // SB_API_VERSION < 16 diff --git a/starboard/shared/pulse/pulse_dynamic_load_dispatcher.cc b/starboard/shared/pulse/pulse_dynamic_load_dispatcher.cc index 2ac81f4f0b9..0382b62cf4a 100644 --- a/starboard/shared/pulse/pulse_dynamic_load_dispatcher.cc +++ b/starboard/shared/pulse/pulse_dynamic_load_dispatcher.cc @@ -17,7 +17,7 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" namespace starboard { namespace shared { diff --git a/starboard/shared/speechd/speechd_internal.cc b/starboard/shared/speechd/speechd_internal.cc index cdb6c9d9ba0..591c4533eb3 100644 --- a/starboard/shared/speechd/speechd_internal.cc +++ b/starboard/shared/speechd/speechd_internal.cc @@ -27,7 +27,7 @@ #include #endif // HAS_LEAK_SANITIZER -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/starboard/application.h" namespace starboard { diff --git a/starboard/shared/starboard/log_mutex.cc b/starboard/shared/starboard/log_mutex.cc index 620c46706f6..55be2fea17c 100644 --- a/starboard/shared/starboard/log_mutex.cc +++ b/starboard/shared/starboard/log_mutex.cc @@ -14,8 +14,8 @@ #include "starboard/shared/starboard/log_mutex.h" +#include "starboard/common/once.h" #include "starboard/configuration.h" -#include "starboard/once.h" namespace starboard { namespace shared { diff --git a/starboard/shared/starboard/media/key_system_supportability_cache.cc b/starboard/shared/starboard/media/key_system_supportability_cache.cc index 6ee65320293..050e29c804a 100644 --- a/starboard/shared/starboard/media/key_system_supportability_cache.cc +++ b/starboard/shared/starboard/media/key_system_supportability_cache.cc @@ -20,8 +20,8 @@ #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/media.h" -#include "starboard/once.h" namespace starboard { namespace shared { diff --git a/starboard/shared/starboard/media/mime_supportability_cache.cc b/starboard/shared/starboard/media/mime_supportability_cache.cc index d52761ccf54..caeba201163 100644 --- a/starboard/shared/starboard/media/mime_supportability_cache.cc +++ b/starboard/shared/starboard/media/mime_supportability_cache.cc @@ -23,9 +23,9 @@ #include "starboard/common/log.h" #include "starboard/common/media.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/log.h" #include "starboard/media.h" -#include "starboard/once.h" #include "starboard/shared/starboard/media/mime_type.h" namespace starboard { diff --git a/starboard/shared/starboard/net_log.cc b/starboard/shared/starboard/net_log.cc index f4e65823d25..57194a3a829 100644 --- a/starboard/shared/starboard/net_log.cc +++ b/starboard/shared/starboard/net_log.cc @@ -28,12 +28,12 @@ #include "starboard/common/atomic.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/semaphore.h" #include "starboard/common/socket.h" #include "starboard/common/string.h" #include "starboard/common/thread.h" #include "starboard/common/time.h" -#include "starboard/once.h" #include "starboard/socket_waiter.h" #ifndef NET_LOG_PORT diff --git a/starboard/shared/starboard/once.cc b/starboard/shared/starboard/once.cc index 0f423d34fe0..ef89a77defc 100644 --- a/starboard/shared/starboard/once.cc +++ b/starboard/shared/starboard/once.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/starboard/lazy_initialization_internal.h" // Platform-independent SbOnce() implementation based on the functionality diff --git a/starboard/shared/starboard/player/job_queue.cc b/starboard/shared/starboard/player/job_queue.cc index e2476053c33..baba61c340d 100644 --- a/starboard/shared/starboard/player/job_queue.cc +++ b/starboard/shared/starboard/player/job_queue.cc @@ -14,10 +14,10 @@ #include "starboard/shared/starboard/player/job_queue.h" +#include #include #include "starboard/common/log.h" -#include "starboard/once.h" #include "starboard/system.h" #include "starboard/thread.h" @@ -28,7 +28,7 @@ namespace player { namespace { -SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -37,7 +37,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); SB_DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } diff --git a/starboard/shared/starboard/player/video_dmp_writer.cc b/starboard/shared/starboard/player/video_dmp_writer.cc index dab55d48543..9d6b2bdc45f 100644 --- a/starboard/shared/starboard/player/video_dmp_writer.cc +++ b/starboard/shared/starboard/player/video_dmp_writer.cc @@ -21,8 +21,8 @@ #include "starboard/common/file.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" -#include "starboard/once.h" #include "starboard/shared/starboard/application.h" namespace starboard { diff --git a/starboard/shared/stub/once.cc b/starboard/shared/stub/once.cc index 7ff1559cc83..570f6c4690d 100644 --- a/starboard/shared/stub/once.cc +++ b/starboard/shared/stub/once.cc @@ -12,8 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/once.h" +#if SB_API_VERSION < 16 + +#include "starboard/common/once.h" bool SbOnce(SbOnceControl* once_control, SbOnceInitRoutine init_routine) { return false; } + +#endif // SB_API_VERSION < 16 diff --git a/starboard/shared/uwp/log_file_impl.cc b/starboard/shared/uwp/log_file_impl.cc index c2269503fac..e3de8fc06f2 100644 --- a/starboard/shared/uwp/log_file_impl.cc +++ b/starboard/shared/uwp/log_file_impl.cc @@ -18,9 +18,9 @@ #include #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/scoped_ptr.h" #include "starboard/common/string.h" -#include "starboard/once.h" #include "starboard/shared/uwp/log_writer_uwp.h" #include "starboard/shared/uwp/log_writer_win32.h" diff --git a/starboard/shared/uwp/log_writer_uwp.cc b/starboard/shared/uwp/log_writer_uwp.cc index 0beb3276fd4..38e57dd2aa4 100644 --- a/starboard/shared/uwp/log_writer_uwp.cc +++ b/starboard/shared/uwp/log_writer_uwp.cc @@ -18,9 +18,9 @@ #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/semaphore.h" #include "starboard/common/string.h" -#include "starboard/once.h" #include "starboard/shared/win32/wchar_utils.h" using Windows::Foundation::AsyncOperationCompletedHandler; diff --git a/starboard/shared/uwp/time_zone_get_name.cc b/starboard/shared/uwp/time_zone_get_name.cc index 58fc8b974b1..d2abda29df1 100644 --- a/starboard/shared/uwp/time_zone_get_name.cc +++ b/starboard/shared/uwp/time_zone_get_name.cc @@ -17,7 +17,7 @@ #include #include -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/win32/wchar_utils.h" namespace { diff --git a/starboard/shared/uwp/wasapi_audio.cc b/starboard/shared/uwp/wasapi_audio.cc index afd778fb637..149da359d01 100644 --- a/starboard/shared/uwp/wasapi_audio.cc +++ b/starboard/shared/uwp/wasapi_audio.cc @@ -19,7 +19,7 @@ #include "starboard/common/atomic.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/starboard/media/mime_supportability_cache.h" #include "starboard/shared/win32/wasapi_include.h" @@ -221,8 +221,8 @@ HRESULT WASAPIAudioDevice::ActivateCompleted( supports_eac3_passthrough_ = hr == S_OK; } } // audio_client_->GetMixFormat - } // audio_client_->SetClientProperties - } // audio_interface->QueryInterface + } // audio_client_->SetClientProperties + } // audio_interface->QueryInterface } audio_client_ = nullptr; diff --git a/starboard/shared/uwp/xb1_media_session_client.cc b/starboard/shared/uwp/xb1_media_session_client.cc index 416fe041b5e..31b085c6110 100644 --- a/starboard/shared/uwp/xb1_media_session_client.cc +++ b/starboard/shared/uwp/xb1_media_session_client.cc @@ -13,11 +13,12 @@ // limitations under the License. #include "starboard/shared/uwp/xb1_media_session_client.h" -#include "starboard/common/log.h" +#include + +#include "starboard/common/log.h" #include "starboard/common/semaphore.h" #include "starboard/key.h" -#include "starboard/once.h" #include "starboard/shared/uwp/app_accessors.h" using starboard::shared::uwp::DisplayRequestActive; @@ -50,7 +51,7 @@ MediaPlaybackStatus MediaSessionPlaybackStateToMediaPlaybackState( return MediaPlaybackStatus::Closed; } -SbOnceControl once_flag = SB_ONCE_INITIALIZER; +pthread_once_t once_flag = PTHREAD_ONCE_INIT; SbMutex mutex; // Callbacks to the last MediaSessionClient to become active, or null. @@ -123,7 +124,7 @@ void OnMediaSessionStateChanged( const CobaltExtensionMediaSessionPlaybackState playback_state = session_state.actual_playback_state; - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); InitButtonCallbackOnce(); @@ -188,7 +189,7 @@ void RegisterMediaSessionCallbacks( CobaltExtensionMediaSessionInvokeActionCallback invoke_action_callback, CobaltExtensionMediaSessionUpdatePlatformPlaybackStateCallback update_platform_playback_state_callback) { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); g_callback_context = callback_context; @@ -199,7 +200,7 @@ void RegisterMediaSessionCallbacks( } void DestroyMediaSessionClientCallback() { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); g_callback_context = NULL; @@ -210,7 +211,7 @@ void DestroyMediaSessionClientCallback() { void UpdateActiveSessionPlatformPlaybackState( CobaltExtensionMediaSessionPlaybackState state) { - SbOnce(&once_flag, OnceInit); + pthread_once(&once_flag, OnceInit); SbMutexAcquire(&mutex); if (g_update_platform_playback_state_callback != NULL && diff --git a/starboard/shared/uwp/xb1_media_session_client.h b/starboard/shared/uwp/xb1_media_session_client.h index 23a54e66c0d..c7660dffb5a 100644 --- a/starboard/shared/uwp/xb1_media_session_client.h +++ b/starboard/shared/uwp/xb1_media_session_client.h @@ -18,8 +18,8 @@ #include #include +#include "starboard/common/once.h" #include "starboard/extension/media_session.h" -#include "starboard/once.h" namespace starboard { namespace shared { diff --git a/starboard/shared/widevine/drm_system_widevine.cc b/starboard/shared/widevine/drm_system_widevine.cc index 701d5a2f291..820d4ef80b8 100644 --- a/starboard/shared/widevine/drm_system_widevine.cc +++ b/starboard/shared/widevine/drm_system_widevine.cc @@ -21,11 +21,11 @@ #include "starboard/common/instance_counter.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/common/time.h" #include "starboard/configuration_constants.h" #include "starboard/memory.h" -#include "starboard/once.h" #include "starboard/shared/starboard/application.h" #include "starboard/shared/starboard/media/mime_type.h" #include "starboard/shared/widevine/widevine_storage.h" diff --git a/starboard/shared/win32/drm_system_playready.cc b/starboard/shared/win32/drm_system_playready.cc index 1e72c62a64a..844283d2274 100644 --- a/starboard/shared/win32/drm_system_playready.cc +++ b/starboard/shared/win32/drm_system_playready.cc @@ -22,10 +22,10 @@ #include "starboard/common/instance_counter.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/configuration.h" #include "starboard/memory.h" -#include "starboard/once.h" #include "starboard/shared/starboard/media/mime_type.h" namespace { diff --git a/starboard/shared/win32/log_file_impl.cc b/starboard/shared/win32/log_file_impl.cc index 04f1969d93c..69ebfb8a193 100644 --- a/starboard/shared/win32/log_file_impl.cc +++ b/starboard/shared/win32/log_file_impl.cc @@ -20,11 +20,11 @@ #include "starboard/common/file.h" #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/configuration_constants.h" #include "starboard/file.h" #include "starboard/memory.h" -#include "starboard/once.h" #include "starboard/shared/win32/file_internal.h" namespace { diff --git a/starboard/shared/win32/minidump.cc b/starboard/shared/win32/minidump.cc index 133463f16ee..916eb106a25 100644 --- a/starboard/shared/win32/minidump.cc +++ b/starboard/shared/win32/minidump.cc @@ -24,7 +24,7 @@ #include "starboard/common/log.h" #include "starboard/common/mutex.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/win32/file_internal.h" using starboard::Mutex; diff --git a/starboard/shared/win32/once.cc b/starboard/shared/win32/once.cc index bdccc466cf6..05df1dca370 100644 --- a/starboard/shared/win32/once.cc +++ b/starboard/shared/win32/once.cc @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/once.h" +#if SB_API_VERSION < 16 + +#include "starboard/common/once.h" #include @@ -38,3 +40,5 @@ bool SbOnce(SbOnceControl* once_control, SbOnceInitRoutine init_routine) { return InitOnceExecuteOnce(SB_WIN32_INTERNAL_ONCE(once_control), OnceTrampoline, init_routine, NULL); } + +#endif // SB_API_VERSION < 16 diff --git a/starboard/shared/win32/starboard_main.cc b/starboard/shared/win32/starboard_main.cc index de504e59344..372d797a982 100644 --- a/starboard/shared/win32/starboard_main.cc +++ b/starboard/shared/win32/starboard_main.cc @@ -68,7 +68,7 @@ extern "C" int StarboardMain(int argc, char** argv) { CoInitialize(nullptr); SbAudioSinkPrivate::Initialize(); starboard::shared::win32::RegisterMainThread(); - // TODO: Do this with SbOnce when media is first used instead. + // TODO: Do this with pthread_once when media is first used instead. HRESULT hr = MFStartup(MF_VERSION); SB_DCHECK(SUCCEEDED(hr)); diff --git a/starboard/shared/win32/system_get_locale_id.cc b/starboard/shared/win32/system_get_locale_id.cc index 969528171ca..41747199450 100644 --- a/starboard/shared/win32/system_get_locale_id.cc +++ b/starboard/shared/win32/system_get_locale_id.cc @@ -17,7 +17,7 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/win32/error_utils.h" #include "starboard/shared/win32/wchar_utils.h" diff --git a/starboard/shared/win32/system_symbolize.cc b/starboard/shared/win32/system_symbolize.cc index ef9dd9b5a1b..52cc344fd02 100644 --- a/starboard/shared/win32/system_symbolize.cc +++ b/starboard/shared/win32/system_symbolize.cc @@ -25,9 +25,9 @@ #include "starboard/common/log.h" #include "starboard/common/mutex.h" +#include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/memory.h" -#include "starboard/once.h" namespace { diff --git a/starboard/shared/win32/thread_create.cc b/starboard/shared/win32/thread_create.cc index 42293adbeae..49db041245a 100644 --- a/starboard/shared/win32/thread_create.cc +++ b/starboard/shared/win32/thread_create.cc @@ -18,7 +18,7 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/win32/error_utils.h" #include "starboard/shared/win32/thread_private.h" #include "starboard/shared/win32/wchar_utils.h" diff --git a/starboard/shared/win32/thread_private.cc b/starboard/shared/win32/thread_private.cc index 456ea3b9aab..665ee98102e 100644 --- a/starboard/shared/win32/thread_private.cc +++ b/starboard/shared/win32/thread_private.cc @@ -18,7 +18,7 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/win32/thread_private.h" using starboard::shared::win32::GetThreadSubsystemSingleton; diff --git a/starboard/shared/win32/thread_private.h b/starboard/shared/win32/thread_private.h index d677638e293..38b57dc1279 100644 --- a/starboard/shared/win32/thread_private.h +++ b/starboard/shared/win32/thread_private.h @@ -22,7 +22,7 @@ #include "starboard/common/condition_variable.h" #include "starboard/common/mutex.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/internal_only.h" #include "starboard/thread.h" diff --git a/starboard/shared/win32/time_zone_get_name.cc b/starboard/shared/win32/time_zone_get_name.cc index 09c80476371..7db27c5f85e 100644 --- a/starboard/shared/win32/time_zone_get_name.cc +++ b/starboard/shared/win32/time_zone_get_name.cc @@ -18,7 +18,7 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/win32/wchar_utils.h" namespace { diff --git a/starboard/xb1/shared/gpu_base_video_decoder.cc b/starboard/xb1/shared/gpu_base_video_decoder.cc index 3785ebd540f..cf0572c236c 100644 --- a/starboard/xb1/shared/gpu_base_video_decoder.cc +++ b/starboard/xb1/shared/gpu_base_video_decoder.cc @@ -18,7 +18,7 @@ #include #include -#include "starboard/once.h" +#include "starboard/common/once.h" #include "starboard/shared/uwp/application_uwp.h" #include "starboard/shared/uwp/async_utils.h" #include "starboard/shared/uwp/decoder_utils.h" diff --git a/third_party/boringssl/src/crypto/internal.h b/third_party/boringssl/src/crypto/internal.h index aaf8215d599..52787aa882f 100644 --- a/third_party/boringssl/src/crypto/internal.h +++ b/third_party/boringssl/src/crypto/internal.h @@ -119,8 +119,9 @@ #include #ifdef STARBOARD +#include + #include "starboard/atomic.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -529,8 +530,8 @@ static inline int constant_time_declassify_int(int v) { // Thread-safe initialisation. #if defined(STARBOARD) -typedef SbOnceControl CRYPTO_once_t; -#define CRYPTO_ONCE_INIT SB_ONCE_INITIALIZER +typedef pthread_once_t CRYPTO_once_t; +#define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT #elif !defined(OPENSSL_THREADS) typedef uint32_t CRYPTO_once_t; #define CRYPTO_ONCE_INIT 0 @@ -552,7 +553,7 @@ typedef pthread_once_t CRYPTO_once_t; // The |once| argument must be a |CRYPTO_once_t| that has been initialised with // the value |CRYPTO_ONCE_INIT|. #if defined(STARBOARD) -#define CRYPTO_once SbOnce +#define CRYPTO_once pthread_once #else OPENSSL_EXPORT void CRYPTO_once(CRYPTO_once_t *once, void (*init)(void)); #endif diff --git a/third_party/boringssl/src/crypto/thread_starboard.cc b/third_party/boringssl/src/crypto/thread_starboard.cc index 928d39dd3c8..bfc49c833c8 100644 --- a/third_party/boringssl/src/crypto/thread_starboard.cc +++ b/third_party/boringssl/src/crypto/thread_starboard.cc @@ -17,11 +17,11 @@ #include "internal.h" #if defined(STARBOARD) +#include #include #include -#include "starboard/once.h" #include "starboard/thread.h" namespace { @@ -36,7 +36,7 @@ struct ThreadLocalEntry { SbThreadLocalKey g_thread_local_key = kSbThreadLocalKeyInvalid; // Control the creation of the global thread local key. -SbOnceControl g_thread_local_once_control = SB_ONCE_INITIALIZER; +pthread_once_t g_thread_local_once_control = PTHREAD_ONCE_INIT; void ThreadLocalDestructor(void* value) { if (value) { @@ -183,7 +183,7 @@ void CRYPTO_STATIC_MUTEX_unlock_write(struct CRYPTO_STATIC_MUTEX* lock) { } void* CRYPTO_get_thread_local(thread_local_data_t index) { - SbOnce(&g_thread_local_once_control, &ThreadLocalInit); + pthread_once(&g_thread_local_once_control, &ThreadLocalInit); if (!SbThreadIsValidLocalKey(g_thread_local_key)) { return nullptr; } @@ -199,7 +199,7 @@ void* CRYPTO_get_thread_local(thread_local_data_t index) { int CRYPTO_set_thread_local(thread_local_data_t index, void *value, thread_local_destructor_t destructor) { - SbOnce(&g_thread_local_once_control, &ThreadLocalInit); + pthread_once(&g_thread_local_once_control, &ThreadLocalInit); if (!SbThreadIsValidLocalKey(g_thread_local_key)) { destructor(value); return 0; diff --git a/third_party/libjpeg-turbo/turbojpeg.c b/third_party/libjpeg-turbo/turbojpeg.c index 125b8b97c9a..ee6f5ea36ed 100644 --- a/third_party/libjpeg-turbo/turbojpeg.c +++ b/third_party/libjpeg-turbo/turbojpeg.c @@ -31,6 +31,7 @@ libjpeg-turbo */ #include +#include #include #define JPEG_INTERNALS #include @@ -46,7 +47,6 @@ #ifdef STARBOARD #include "starboard/common/log.h" #include "starboard/configuration.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -65,7 +65,7 @@ extern void jpeg_mem_src_tj(j_decompress_ptr, const unsigned char *, #if defined(STARBOARD) static SbThreadLocalKey g_err_key = kSbThreadLocalKeyInvalid; -static SbOnceControl g_err_once = SB_ONCE_INITIALIZER; +static pthread_once_t g_err_once = PTHREAD_ONCE_INIT; void initialize_err_key(void) { g_err_key = SbThreadCreateLocalKey(free); @@ -74,7 +74,7 @@ void initialize_err_key(void) { } char* errStr() { - SbOnce(&g_err_once, initialize_err_key); + pthread_once(&g_err_once, initialize_err_key); char* value = (char*)(SbThreadGetLocalValue(g_err_key)); diff --git a/third_party/llvm-project/libcxx/include/__external_threading b/third_party/llvm-project/libcxx/include/__external_threading index 93f1ea7c159..795a29341fe 100644 --- a/third_party/llvm-project/libcxx/include/__external_threading +++ b/third_party/llvm-project/libcxx/include/__external_threading @@ -3,14 +3,13 @@ #include <__chrono/duration.h> #include <__config> +#include #include - #include #include "starboard/common/recursive_mutex.h" #include "starboard/condition_variable.h" #include "starboard/mutex.h" -#include "starboard/once.h" #include "starboard/thread.h" _LIBCPP_PUSH_MACROS @@ -35,8 +34,8 @@ typedef starboard::RecursiveMutex __libcpp_recursive_mutex_t; typedef SbConditionVariable __libcpp_condvar_t; #define _LIBCPP_CONDVAR_INITIALIZER SB_CONDITION_VARIABLE_INITIALIZER -typedef SbOnceControl __libcpp_exec_once_flag; -#define _LIBCPP_EXEC_ONCE_INITIALIZER SB_ONCE_INITIALIZER +typedef pthread_once_t __libcpp_exec_once_flag; +#define _LIBCPP_EXEC_ONCE_INITIALIZER PTHREAD_ONCE_INIT typedef SbThread __libcpp_thread_t; typedef SbThread __libcpp_thread_id; @@ -217,7 +216,7 @@ int __libcpp_condvar_destroy(__libcpp_condvar_t* __cv) { int __libcpp_execute_once(__libcpp_exec_once_flag* flag, void (*init_routine)(void)) { - if (SbOnce(flag, init_routine)) { + if (pthread_once(flag, init_routine) == 0) { return 0; } return 1; diff --git a/third_party/musl/src/starboard/errno/__errno_location.c b/third_party/musl/src/starboard/errno/__errno_location.c index 2beff14e9b8..7258a52a53d 100644 --- a/third_party/musl/src/starboard/errno/__errno_location.c +++ b/third_party/musl/src/starboard/errno/__errno_location.c @@ -2,11 +2,11 @@ #include #include "starboard/common/log.h" -#include "starboard/once.h" #include "starboard/thread.h" +#include "../pthread/pthread.h" static SbThreadLocalKey g_errno_key = kSbThreadLocalKeyInvalid; -static SbOnceControl g_errno_once = SB_ONCE_INITIALIZER; +static pthread_once_t g_errno_once = PTHREAD_ONCE_INIT; void initialize_errno_key(void) { g_errno_key = SbThreadCreateLocalKey(free); @@ -20,7 +20,7 @@ void initialize_errno_key(void) { // errno from thread-local storage. int *__errno_location(void) { - SB_DCHECK(SbOnce(&g_errno_once, &initialize_errno_key)); + SB_DCHECK(pthread_once(&g_errno_once, &initialize_errno_key) == 0); int* value = (int*)SbThreadGetLocalValue(g_errno_key); diff --git a/third_party/skia/src/sksl/SkSLPool.cpp b/third_party/skia/src/sksl/SkSLPool.cpp index acffa9f5af8..7effa40b0d6 100644 --- a/third_party/skia/src/sksl/SkSLPool.cpp +++ b/third_party/skia/src/sksl/SkSLPool.cpp @@ -11,7 +11,8 @@ #define VLOG(...) // printf(__VA_ARGS__) #ifdef STARBOARD -#include "starboard/once.h" +#include + #include "starboard/thread.h" #endif @@ -29,7 +30,7 @@ static void set_thread_local_memory_pool(MemoryPool* memPool) { } #else namespace { -SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -39,7 +40,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); SkASSERT(SbThreadIsValidLocalKey(s_thread_local_key)); } } // namespace diff --git a/third_party/skia/src/sksl/SkSLThreadContext.cpp b/third_party/skia/src/sksl/SkSLThreadContext.cpp index 5d00e68f141..63d3404580b 100644 --- a/third_party/skia/src/sksl/SkSLThreadContext.cpp +++ b/third_party/skia/src/sksl/SkSLThreadContext.cpp @@ -16,8 +16,9 @@ #include "src/sksl/ir/SkSLExternalFunction.h" #if defined(STARBOARD) +#include + #include "starboard/common/log.h" -#include "starboard/once.h" #include "starboard/thread.h" #endif @@ -212,7 +213,7 @@ void ThreadContext::SetInstance(std::unique_ptr newInstance) { namespace { ThreadContext* instance = nullptr; -SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -222,7 +223,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); SB_DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); } } // namespace diff --git a/third_party/zlib/arm_features.c b/third_party/zlib/arm_features.c index 22bcefc38c6..2e90dd7df24 100644 --- a/third_party/zlib/arm_features.c +++ b/third_party/zlib/arm_features.c @@ -15,15 +15,12 @@ int ZLIB_INTERNAL arm_cpu_enable_neon = 0; #endif int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; -#if !defined(STARBOARD) -#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) || defined(STARBOARD) #include #endif -#endif #if defined(STARBOARD) #include "starboard/log.h" -#include "starboard/once.h" #include "starboard/string.h" #include "starboard/cpu_features.h" #elif defined(ARMV8_OS_ANDROID) @@ -45,13 +42,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; static void _arm_check_features(void); -#if defined(STARBOARD) -SbOnceControl cpu_check_inited_once = SB_ONCE_INITIALIZER; -void ZLIB_INTERNAL arm_check_features(void) -{ - SbOnce(&cpu_check_inited_once, _arm_check_features); -} -#elif defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) || defined(STARBOARD) static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT; void ZLIB_INTERNAL arm_check_features(void) { diff --git a/third_party/zlib/x86.c b/third_party/zlib/x86.c index 102b6721771..878d0a6fe14 100644 --- a/third_party/zlib/x86.c +++ b/third_party/zlib/x86.c @@ -15,16 +15,17 @@ int ZLIB_INTERNAL x86_cpu_enable_ssse3 = 0; int ZLIB_INTERNAL x86_cpu_enable_simd = 0; #ifdef STARBOARD +#include + #include "starboard/cpu_features.h" #include "starboard/log.h" -#include "starboard/once.h" -SbOnceControl cpu_check_inited_once = SB_ONCE_INITIALIZER; +pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT; static void _x86_check_features(void); void x86_check_features(void) { - SbOnce(&cpu_check_inited_once, _x86_check_features); + pthread_once(&cpu_check_inited_once, _x86_check_features); } static void _x86_check_features(void) diff --git a/v8/src/heap/heap-write-barrier.cc b/v8/src/heap/heap-write-barrier.cc index c7503106fb8..6f69b3d7e0a 100644 --- a/v8/src/heap/heap-write-barrier.cc +++ b/v8/src/heap/heap-write-barrier.cc @@ -31,15 +31,16 @@ void WriteBarrier::ClearForThread(MarkingBarrier* marking_barrier) { MarkingBarrier* GetMarkingBarrier() { return current_marking_barrier; } #else +#include + #include "starboard/common/log.h" -#include "starboard/once.h" #include "starboard/thread.h" namespace v8 { namespace internal { namespace { -SbOnceControl s_once_flag = SB_ONCE_INITIALIZER; +pthread_once_t s_once_flag = PTHREAD_ONCE_INIT; SbThreadLocalKey s_thread_local_key = kSbThreadLocalKeyInvalid; void InitThreadLocalKey() { @@ -48,7 +49,7 @@ void InitThreadLocalKey() { } void EnsureThreadLocalKeyInited() { - SbOnce(&s_once_flag, InitThreadLocalKey); + pthread_once(&s_once_flag, InitThreadLocalKey); SB_DCHECK(SbThreadIsValidLocalKey(s_thread_local_key)); }