/* SPDX-License-Identifier: GPL-2.0 */ /* * Kernel features the loader probes before load and hands to the BPF side in * one rodata word, so that a program can carry both the path a feature enables * and its fallback while the verifier prunes the one the running kernel cannot * take. scx_utils sets the word in the ops open macros. The bits are mirrored * in rust/scx_utils/src/compat.rs. * * Included by scx/common.bpf.h; don't include directly. * * Copyright (c) 2026 Meta Platforms, Inc. and affiliates. * Copyright (c) 2026 Tejun Heo */ #ifndef __SCX_FEATURES_BPF_H #define __SCX_FEATURES_BPF_H enum scx_lib_feature { /* the JIT lowers fetching AND, OR and XOR on arena pointers */ SCX_LIB_FEAT_ARENA_FETCH_BITOPS = 1ULL << 0, }; const volatile u64 scx_lib_features __weak; static __always_inline bool scx_lib_has(u64 feat) { return scx_lib_features & feat; } #endif /* __SCX_FEATURES_BPF_H */