Path: blob/main/contrib/llvm-project/compiler-rt/lib/rtsan/rtsan.cpp
35233 views
//===--- rtsan.cpp - Realtime Sanitizer -------------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8//===----------------------------------------------------------------------===//910#include <rtsan/rtsan.h>11#include <rtsan/rtsan_context.h>12#include <rtsan/rtsan_interceptors.h>1314using namespace __rtsan;1516bool __rtsan::rtsan_initialized;17bool __rtsan::rtsan_init_is_running;1819extern "C" {2021SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_init() {22CHECK(!rtsan_init_is_running);23if (rtsan_initialized)24return;25rtsan_init_is_running = true;2627InitializeInterceptors();2829rtsan_init_is_running = false;30rtsan_initialized = true;31}3233SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_realtime_enter() {34__rtsan::GetContextForThisThread().RealtimePush();35}3637SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_realtime_exit() {38__rtsan::GetContextForThisThread().RealtimePop();39}4041SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_off() {42__rtsan::GetContextForThisThread().BypassPush();43}4445SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_on() {46__rtsan::GetContextForThisThread().BypassPop();47}4849} // extern "C"505152