11f9cb04fSpatrick //=-- lsan_posix.h -----------------------------------------------------===//
21f9cb04fSpatrick //
31f9cb04fSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
41f9cb04fSpatrick // See https://llvm.org/LICENSE.txt for license information.
51f9cb04fSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
61f9cb04fSpatrick //
71f9cb04fSpatrick //===---------------------------------------------------------------------===//
81f9cb04fSpatrick //
91f9cb04fSpatrick // This file is a part of LeakSanitizer.
101f9cb04fSpatrick // Standalone LSan RTL code common to POSIX-like systems.
111f9cb04fSpatrick //
121f9cb04fSpatrick //===---------------------------------------------------------------------===//
131f9cb04fSpatrick 
141f9cb04fSpatrick #ifndef LSAN_POSIX_H
151f9cb04fSpatrick #define LSAN_POSIX_H
161f9cb04fSpatrick 
171f9cb04fSpatrick #include "lsan_thread.h"
181f9cb04fSpatrick #include "sanitizer_common/sanitizer_platform.h"
191f9cb04fSpatrick 
201f9cb04fSpatrick #if !SANITIZER_POSIX
211f9cb04fSpatrick #error "lsan_posix.h is used only on POSIX-like systems (SANITIZER_POSIX)"
221f9cb04fSpatrick #endif
231f9cb04fSpatrick 
241f9cb04fSpatrick namespace __sanitizer {
251f9cb04fSpatrick struct DTLS;
261f9cb04fSpatrick }
271f9cb04fSpatrick 
281f9cb04fSpatrick namespace __lsan {
291f9cb04fSpatrick 
30*d89ec533Spatrick class ThreadContext final : public ThreadContextLsanBase {
311f9cb04fSpatrick  public:
321f9cb04fSpatrick   explicit ThreadContext(int tid);
331f9cb04fSpatrick   void OnStarted(void *arg) override;
tls_begin()341f9cb04fSpatrick   uptr tls_begin() { return tls_begin_; }
tls_end()351f9cb04fSpatrick   uptr tls_end() { return tls_end_; }
dtls()361f9cb04fSpatrick   DTLS *dtls() { return dtls_; }
371f9cb04fSpatrick 
381f9cb04fSpatrick  private:
391f9cb04fSpatrick   uptr tls_begin_ = 0;
401f9cb04fSpatrick   uptr tls_end_ = 0;
411f9cb04fSpatrick   DTLS *dtls_ = nullptr;
421f9cb04fSpatrick };
431f9cb04fSpatrick 
441f9cb04fSpatrick void ThreadStart(u32 tid, tid_t os_id,
451f9cb04fSpatrick                  ThreadType thread_type = ThreadType::Regular);
461f9cb04fSpatrick 
471f9cb04fSpatrick }  // namespace __lsan
481f9cb04fSpatrick 
491f9cb04fSpatrick #endif  // LSAN_POSIX_H
50