sfFDN
Loading...
Searching...
No Matches
attributes.h
1// Copyright (C) 2025 Alexandre St-Onge
2// SPDX-License-Identifier: MIT
3#pragma once
4
5#ifdef __clang__
6#if __has_attribute(nonblocking)
7#define SFFDN_NONBLOCKING [[clang::nonblocking]]
8#else
9#define SFFDN_NONBLOCKING
10#endif
11#else
12#define SFFDN_NONBLOCKING
13#endif
14
15#ifdef __clang__
16#define SFFDN_FEA_UNSAFE(...) \
17 _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wunknown-warning-option\"") \
18 _Pragma("clang diagnostic ignored \"-Wfunction-effects\"") __VA_ARGS__ _Pragma("clang diagnostic pop")
19#else
20#define SFFDN_FEA_UNSAFE(...) __VA_ARGS__
21#endif
22
23#ifdef __has_feature
24#if __has_feature(realtime_sanitizer)
25#include <sanitizer/rtsan_interface.h>
26#define SFFDN_RTSAN_SCOPED_DISABLER(name) __rtsan::ScopedDisabler name
27#else
28#define SFFDN_RTSAN_SCOPED_DISABLER(name)
29#endif
30#else
31#define SFFDN_RTSAN_SCOPED_DISABLER(name)
32#endif