003 File Manager
Current Path:
/usr/src/contrib/llvm-project/compiler-rt/lib/scudo
usr
/
src
/
contrib
/
llvm-project
/
compiler-rt
/
lib
/
scudo
/
📁
..
📄
scudo_allocator.cpp
(30.02 KB)
📄
scudo_allocator.h
(4.54 KB)
📄
scudo_allocator_combined.h
(2.14 KB)
📄
scudo_allocator_secondary.h
(7.03 KB)
📄
scudo_crc32.cpp
(893 B)
📄
scudo_crc32.h
(4.74 KB)
📄
scudo_errors.cpp
(2.82 KB)
📄
scudo_errors.h
(1.31 KB)
📄
scudo_flags.cpp
(4.25 KB)
📄
scudo_flags.h
(805 B)
📄
scudo_flags.inc
(2.11 KB)
📄
scudo_interface_internal.h
(984 B)
📄
scudo_malloc.cpp
(2.2 KB)
📄
scudo_new_delete.cpp
(4.14 KB)
📄
scudo_platform.h
(3.09 KB)
📄
scudo_termination.cpp
(1.36 KB)
📄
scudo_tsd.h
(1.67 KB)
📄
scudo_tsd_exclusive.cpp
(2.17 KB)
📄
scudo_tsd_exclusive.inc
(1.34 KB)
📄
scudo_tsd_shared.cpp
(3.38 KB)
📄
scudo_tsd_shared.inc
(1.61 KB)
📄
scudo_utils.cpp
(4.89 KB)
📄
scudo_utils.h
(986 B)
📁
standalone
Editing: scudo_tsd.h
//===-- scudo_tsd.h ---------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// Scudo thread specific data definition. /// Implementation will differ based on the thread local storage primitives /// offered by the underlying platform. /// //===----------------------------------------------------------------------===// #ifndef SCUDO_TSD_H_ #define SCUDO_TSD_H_ #include "scudo_allocator.h" #include "scudo_utils.h" #include <pthread.h> namespace __scudo { struct ALIGNED(SANITIZER_CACHE_LINE_SIZE) ScudoTSD { AllocatorCacheT Cache; uptr QuarantineCachePlaceHolder[4]; void init(); void commitBack(); INLINE bool tryLock() { if (Mutex.TryLock()) { atomic_store_relaxed(&Precedence, 0); return true; } if (atomic_load_relaxed(&Precedence) == 0) atomic_store_relaxed(&Precedence, static_cast<uptr>( MonotonicNanoTime() >> FIRST_32_SECOND_64(16, 0))); return false; } INLINE void lock() { atomic_store_relaxed(&Precedence, 0); Mutex.Lock(); } INLINE void unlock() { Mutex.Unlock(); } INLINE uptr getPrecedence() { return atomic_load_relaxed(&Precedence); } private: StaticSpinMutex Mutex; atomic_uintptr_t Precedence; }; void initThread(bool MinimalInit); // TSD model specific fastpath functions definitions. #include "scudo_tsd_exclusive.inc" #include "scudo_tsd_shared.inc" } // namespace __scudo #endif // SCUDO_TSD_H_
Upload File
Create Folder