/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */ #pragma once #ifndef arena_container_of #define arena_container_of(ptr, type, member) \ ({ \ void __arena *__mptr = (void __arena *)(ptr); \ ((type *)(__mptr - offsetof(type, member))); \ }) #endif /* Provide the definition of PAGE_SIZE. */ #include #define __arena #define __arg_arena #define cast_kern(ptr) /* nop for user space */ #define cast_user(ptr) /* nop for user space */ char __attribute__((weak)) arena[1]; #ifndef offsetof #define offsetof(type, member) ((unsigned long)&((type *)0)->member) #endif static inline void __arena* bpf_arena_alloc_pages(void *map, void *addr, __u32 page_cnt, int node_id, __u64 flags) { return NULL; } static inline void bpf_arena_free_pages(void *map, void __arena *ptr, __u32 page_cnt) { }