11adb55b1SChris Apple //===--- rtsan.h - Realtime Sanitizer ---------------------------*- C++ -*-===// 21adb55b1SChris Apple // 31adb55b1SChris Apple // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41adb55b1SChris Apple // See https://llvm.org/LICENSE.txt for license information. 51adb55b1SChris Apple // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61adb55b1SChris Apple // 71adb55b1SChris Apple //===----------------------------------------------------------------------===// 81adb55b1SChris Apple // 91adb55b1SChris Apple //===----------------------------------------------------------------------===// 101adb55b1SChris Apple 111adb55b1SChris Apple #pragma once 121adb55b1SChris Apple 131adb55b1SChris Apple #include "sanitizer_common/sanitizer_internal_defs.h" 141adb55b1SChris Apple 151adb55b1SChris Apple extern "C" { 161adb55b1SChris Apple 171adb55b1SChris Apple // Initialise rtsan interceptors. 181adb55b1SChris Apple // A call to this method is added to the preinit array on Linux systems. 191adb55b1SChris Apple SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_init(); 201adb55b1SChris Apple 210a2a319eSChris Apple // Initializes rtsan if it has not been initialized yet. 220a2a319eSChris Apple // Used by the RTSan runtime to ensure that rtsan is initialized before any 230a2a319eSChris Apple // other rtsan functions are called. 240a2a319eSChris Apple SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_ensure_initialized(); 250a2a319eSChris Apple 260a2a319eSChris Apple SANITIZER_INTERFACE_ATTRIBUTE bool __rtsan_is_initialized(); 270a2a319eSChris Apple 281adb55b1SChris Apple // Enter real-time context. 291adb55b1SChris Apple // When in a real-time context, RTSan interceptors will error if realtime 301adb55b1SChris Apple // violations are detected. Calls to this method are injected at the code 311adb55b1SChris Apple // generation stage when RTSan is enabled. 321adb55b1SChris Apple SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_realtime_enter(); 331adb55b1SChris Apple 341adb55b1SChris Apple // Exit the real-time context. 351adb55b1SChris Apple // When not in a real-time context, RTSan interceptors will simply forward 361adb55b1SChris Apple // intercepted method calls to the real methods. 371adb55b1SChris Apple SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_realtime_exit(); 381adb55b1SChris Apple 395d146c68SChris Apple // See documentation in rtsan_interface.h. 40a919588dSChris Apple SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_disable(); 411adb55b1SChris Apple 425d146c68SChris Apple // See documentation in rtsan_interface.h. 43a919588dSChris Apple SANITIZER_INTERFACE_ATTRIBUTE void __rtsan_enable(); 441adb55b1SChris Apple 45fee48365SChris Apple SANITIZER_INTERFACE_ATTRIBUTE void 460a84f122SChris Apple __rtsan_notify_intercepted_call(const char *intercepted_function_name); 47fee48365SChris Apple 48*1b601938SChris Apple SANITIZER_INTERFACE_ATTRIBUTE void 49*1b601938SChris Apple __rtsan_notify_blocking_call(const char *blocking_function_name); 501adb55b1SChris Apple } // extern "C" 51