xref: /llvm-project/compiler-rt/lib/rtsan/rtsan.h (revision 1b6019388c17657c1c07f1e3123a7b4000f94490)
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