1*de68c051SAndrea Righi /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2*de68c051SAndrea Righi /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
3*de68c051SAndrea Righi #pragma once
4*de68c051SAndrea Righi
5*de68c051SAndrea Righi #ifndef arena_container_of
6*de68c051SAndrea Righi #define arena_container_of(ptr, type, member) \
7*de68c051SAndrea Righi ({ \
8*de68c051SAndrea Righi void __arena *__mptr = (void __arena *)(ptr); \
9*de68c051SAndrea Righi ((type *)(__mptr - offsetof(type, member))); \
10*de68c051SAndrea Righi })
11*de68c051SAndrea Righi #endif
12*de68c051SAndrea Righi
13*de68c051SAndrea Righi /* Provide the definition of PAGE_SIZE. */
14*de68c051SAndrea Righi #include <sys/user.h>
15*de68c051SAndrea Righi
16*de68c051SAndrea Righi #define __arena
17*de68c051SAndrea Righi #define __arg_arena
18*de68c051SAndrea Righi #define cast_kern(ptr) /* nop for user space */
19*de68c051SAndrea Righi #define cast_user(ptr) /* nop for user space */
20*de68c051SAndrea Righi char __attribute__((weak)) arena[1];
21*de68c051SAndrea Righi
22*de68c051SAndrea Righi #ifndef offsetof
23*de68c051SAndrea Righi #define offsetof(type, member) ((unsigned long)&((type *)0)->member)
24*de68c051SAndrea Righi #endif
25*de68c051SAndrea Righi
bpf_arena_alloc_pages(void * map,void * addr,__u32 page_cnt,int node_id,__u64 flags)26*de68c051SAndrea Righi static inline void __arena* bpf_arena_alloc_pages(void *map, void *addr, __u32 page_cnt,
27*de68c051SAndrea Righi int node_id, __u64 flags)
28*de68c051SAndrea Righi {
29*de68c051SAndrea Righi return NULL;
30*de68c051SAndrea Righi }
bpf_arena_free_pages(void * map,void __arena * ptr,__u32 page_cnt)31*de68c051SAndrea Righi static inline void bpf_arena_free_pages(void *map, void __arena *ptr, __u32 page_cnt)
32*de68c051SAndrea Righi {
33*de68c051SAndrea Righi }
34