Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1// Copyright (c) 2012 The LevelDB Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file. See the AUTHORS file for names of contributors.5#ifndef STORAGE_LEVELDB_PORT_THREAD_ANNOTATIONS_H_6#define STORAGE_LEVELDB_PORT_THREAD_ANNOTATIONS_H_8// Use Clang's thread safety analysis annotations when available. In other9// environments, the macros receive empty definitions.10// Usage documentation: https://clang.llvm.org/docs/ThreadSafetyAnalysis.html12#if !defined(THREAD_ANNOTATION_ATTRIBUTE__)14#if defined(__clang__)16#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))17#else18#define THREAD_ANNOTATION_ATTRIBUTE__(x) // no-op19#endif21#endif // !defined(THREAD_ANNOTATION_ATTRIBUTE__)23#ifndef GUARDED_BY24#define GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))25#endif27#ifndef PT_GUARDED_BY28#define PT_GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))29#endif31#ifndef ACQUIRED_AFTER32#define ACQUIRED_AFTER(...) \33THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__))34#endif36#ifndef ACQUIRED_BEFORE37#define ACQUIRED_BEFORE(...) \38THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__))39#endif41#ifndef EXCLUSIVE_LOCKS_REQUIRED42#define EXCLUSIVE_LOCKS_REQUIRED(...) \43THREAD_ANNOTATION_ATTRIBUTE__(exclusive_locks_required(__VA_ARGS__))44#endif46#ifndef SHARED_LOCKS_REQUIRED47#define SHARED_LOCKS_REQUIRED(...) \48THREAD_ANNOTATION_ATTRIBUTE__(shared_locks_required(__VA_ARGS__))49#endif51#ifndef LOCKS_EXCLUDED52#define LOCKS_EXCLUDED(...) \53THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__))54#endif56#ifndef LOCK_RETURNED57#define LOCK_RETURNED(x) THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))58#endif60#ifndef LOCKABLE61#define LOCKABLE THREAD_ANNOTATION_ATTRIBUTE__(lockable)62#endif64#ifndef SCOPED_LOCKABLE65#define SCOPED_LOCKABLE THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)66#endif68#ifndef EXCLUSIVE_LOCK_FUNCTION69#define EXCLUSIVE_LOCK_FUNCTION(...) \70THREAD_ANNOTATION_ATTRIBUTE__(exclusive_lock_function(__VA_ARGS__))71#endif73#ifndef SHARED_LOCK_FUNCTION74#define SHARED_LOCK_FUNCTION(...) \75THREAD_ANNOTATION_ATTRIBUTE__(shared_lock_function(__VA_ARGS__))76#endif78#ifndef EXCLUSIVE_TRYLOCK_FUNCTION79#define EXCLUSIVE_TRYLOCK_FUNCTION(...) \80THREAD_ANNOTATION_ATTRIBUTE__(exclusive_trylock_function(__VA_ARGS__))81#endif83#ifndef SHARED_TRYLOCK_FUNCTION84#define SHARED_TRYLOCK_FUNCTION(...) \85THREAD_ANNOTATION_ATTRIBUTE__(shared_trylock_function(__VA_ARGS__))86#endif88#ifndef UNLOCK_FUNCTION89#define UNLOCK_FUNCTION(...) \90THREAD_ANNOTATION_ATTRIBUTE__(unlock_function(__VA_ARGS__))91#endif93#ifndef NO_THREAD_SAFETY_ANALYSIS94#define NO_THREAD_SAFETY_ANALYSIS \95THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)96#endif98#ifndef ASSERT_EXCLUSIVE_LOCK99#define ASSERT_EXCLUSIVE_LOCK(...) \100THREAD_ANNOTATION_ATTRIBUTE__(assert_exclusive_lock(__VA_ARGS__))101#endif103#ifndef ASSERT_SHARED_LOCK104#define ASSERT_SHARED_LOCK(...) \105THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_lock(__VA_ARGS__))106#endif108#endif // STORAGE_LEVELDB_PORT_THREAD_ANNOTATIONS_H_
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.