Adding mapFlags parameter while created BPF maps.
This will allow BPF maps to be created with flag options that are supported e.g BPF_F_NO_PREALLOC, BPF_F_MMAPABLE and others. Bug: 387984935 Test: Modified NetBpfLoader to dump the map flags. Change-Id: Ia13ca5a861e8275e831c2b96f4759d1e8f111963
This commit is contained in:
parent
81056e4429
commit
5c01da8e19
2 changed files with 10 additions and 10 deletions
|
|
@ -234,13 +234,13 @@ static void (*bpf_ringbuf_submit_unsafe)(const void* data, __u64 flags) = (void*
|
|||
#define DEFINE_BPF_MAP_BASE(the_map, TYPE, keysize, valuesize, num_entries, \
|
||||
usr, grp, md, selinux, pindir, share, minkver, \
|
||||
maxkver, minloader, maxloader, ignore_eng, \
|
||||
ignore_user, ignore_userdebug) \
|
||||
ignore_user, ignore_userdebug, mapflags) \
|
||||
const struct bpf_map_def SECTION("maps") the_map = { \
|
||||
.type = BPF_MAP_TYPE_##TYPE, \
|
||||
.key_size = (keysize), \
|
||||
.value_size = (valuesize), \
|
||||
.max_entries = (num_entries), \
|
||||
.map_flags = 0, \
|
||||
.map_flags = (mapflags), \
|
||||
.uid = (usr), \
|
||||
.gid = (grp), \
|
||||
.mode = (md), \
|
||||
|
|
@ -269,7 +269,7 @@ static void (*bpf_ringbuf_submit_unsafe)(const void* data, __u64 flags) = (void*
|
|||
DEFINE_BPF_MAP_BASE(the_map, RINGBUF, 0, 0, size_bytes, usr, grp, md, \
|
||||
selinux, pindir, share, KVER_5_8, KVER_INF, \
|
||||
min_loader, max_loader, ignore_eng, ignore_user, \
|
||||
ignore_userdebug); \
|
||||
ignore_userdebug, 0); \
|
||||
\
|
||||
_Static_assert((size_bytes) >= 4096, "min 4 kiB ringbuffer size"); \
|
||||
_Static_assert((size_bytes) <= 0x10000000, "max 256 MiB ringbuffer size"); \
|
||||
|
|
@ -317,11 +317,11 @@ static void (*bpf_ringbuf_submit_unsafe)(const void* data, __u64 flags) = (void*
|
|||
/* type safe macro to declare a map and related accessor functions */
|
||||
#define DEFINE_BPF_MAP_EXT(the_map, TYPE, KeyType, ValueType, num_entries, usr, grp, md, \
|
||||
selinux, pindir, share, min_loader, max_loader, ignore_eng, \
|
||||
ignore_user, ignore_userdebug) \
|
||||
ignore_user, ignore_userdebug, mapFlags) \
|
||||
DEFINE_BPF_MAP_BASE(the_map, TYPE, sizeof(KeyType), sizeof(ValueType), \
|
||||
num_entries, usr, grp, md, selinux, pindir, share, \
|
||||
KVER_NONE, KVER_INF, min_loader, max_loader, \
|
||||
ignore_eng, ignore_user, ignore_userdebug); \
|
||||
ignore_eng, ignore_user, ignore_userdebug, mapFlags); \
|
||||
BPF_MAP_ASSERT_OK(BPF_MAP_TYPE_##TYPE, (num_entries), (md)); \
|
||||
_Static_assert(sizeof(KeyType) < 1024, "aosp/2370288 requires < 1024 byte keys"); \
|
||||
_Static_assert(sizeof(ValueType) < 65536, "aosp/2370288 requires < 65536 byte values"); \
|
||||
|
|
@ -359,13 +359,13 @@ static void (*bpf_ringbuf_submit_unsafe)(const void* data, __u64 flags) = (void*
|
|||
#define DEFINE_BPF_MAP_KERNEL_INTERNAL(the_map, TYPE, KeyType, ValueType, num_entries) \
|
||||
DEFINE_BPF_MAP_EXT(the_map, TYPE, KeyType, ValueType, num_entries, AID_ROOT, AID_ROOT, \
|
||||
0000, "fs_bpf_loader", "", PRIVATE, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, \
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG, 0)
|
||||
|
||||
#define DEFINE_BPF_MAP_UGM(the_map, TYPE, KeyType, ValueType, num_entries, usr, grp, md) \
|
||||
DEFINE_BPF_MAP_EXT(the_map, TYPE, KeyType, ValueType, num_entries, usr, grp, md, \
|
||||
DEFAULT_BPF_MAP_SELINUX_CONTEXT, DEFAULT_BPF_MAP_PIN_SUBDIR, \
|
||||
PRIVATE, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, \
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG, 0)
|
||||
|
||||
#define DEFINE_BPF_MAP(the_map, TYPE, KeyType, ValueType, num_entries) \
|
||||
DEFINE_BPF_MAP_UGM(the_map, TYPE, KeyType, ValueType, num_entries, \
|
||||
|
|
|
|||
|
|
@ -46,14 +46,14 @@ static const bool TRACE_OFF = false;
|
|||
DEFINE_BPF_MAP_EXT(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, \
|
||||
AID_ROOT, AID_NET_BW_ACCT, 0060, "fs_bpf_net_shared", "", \
|
||||
PRIVATE, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, \
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG, 0)
|
||||
|
||||
// For maps netd only needs read only access to
|
||||
#define DEFINE_BPF_MAP_RO_NETD(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
|
||||
DEFINE_BPF_MAP_EXT(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries, \
|
||||
AID_ROOT, AID_NET_BW_ACCT, 0460, "fs_bpf_netd_readonly", "", \
|
||||
PRIVATE, BPFLOADER_MIN_VER, BPFLOADER_MAX_VER, \
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG, 0)
|
||||
|
||||
// For maps netd needs to be able to read and write
|
||||
#define DEFINE_BPF_MAP_RW_NETD(the_map, TYPE, TypeOfKey, TypeOfValue, num_entries) \
|
||||
|
|
@ -92,7 +92,7 @@ DEFINE_BPF_MAP_NO_NETD(iface_index_name_map, HASH, uint32_t, IfaceValue, IFACE_I
|
|||
DEFINE_BPF_MAP_EXT(packet_trace_enabled_map, ARRAY, uint32_t, bool, 1,
|
||||
AID_ROOT, AID_SYSTEM, 0060, "fs_bpf_net_shared", "", PRIVATE,
|
||||
BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG,
|
||||
LOAD_ON_USER, LOAD_ON_USERDEBUG)
|
||||
LOAD_ON_USER, LOAD_ON_USERDEBUG, 0)
|
||||
|
||||
// A ring buffer on which packet information is pushed.
|
||||
DEFINE_BPF_RINGBUF_EXT(packet_trace_ringbuf, PacketTrace, PACKET_TRACE_BUF_SIZE,
|
||||
|
|
|
|||
Loading…
Reference in a new issue