template <class Allocator>

struct TSD

Defined at line 27 of file ../../third_party/scudo/src/tsd.h

Public Members

u8 DestructorIterations

Public Methods

void init (Allocator * Instance)

Defined at line 31 of file ../../third_party/scudo/src/tsd.h

bool tryLock ()

Defined at line 38 of file ../../third_party/scudo/src/tsd.h

void lock ()

Defined at line 49 of file ../../third_party/scudo/src/tsd.h

void unlock ()

Defined at line 53 of file ../../third_party/scudo/src/tsd.h

uptr getPrecedence ()

Defined at line 54 of file ../../third_party/scudo/src/tsd.h

void commitBack (Allocator * Instance)

Defined at line 56 of file ../../third_party/scudo/src/tsd.h

void assertLocked (bool BypassCheck)

As the comments attached to `getCache()`, the TSD doesn't always need to be

locked. In that case, we would only skip the check before we have all TSDs

locked in all paths.

Defined at line 61 of file ../../third_party/scudo/src/tsd.h

typename Allocator::SizeClassAllocatorT & getSizeClassAllocator ()

Ideally, we may want to assert that all the operations on

Cache/QuarantineCache always have the `Mutex` acquired. However, the

current architecture of accessing TSD is not easy to cooperate with the

thread-safety analysis because of pointer aliasing. So now we just add the

assertion on the getters of Cache/QuarantineCache.

TODO(chiahungduan): Ideally, we want to do `Mutex.assertHeld` but acquiring

TSD doesn't always require holding the lock. Add this assertion while the

lock is always acquired.

Defined at line 75 of file ../../third_party/scudo/src/tsd.h

typename Allocator::QuarantineCacheT & getQuarantineCache ()

Defined at line 79 of file ../../third_party/scudo/src/tsd.h