This adds a BPF program with a ring buffer and an associated test that ensures the program and ring buffer can be loaded by the bpf loader. In the following changes, this foundation will be used to test the user space ring buffer wrapper class. Unlike BpfMap, userspace can't (easily) write to the ring buffer so the most accurate way to test a userspace ring buffer implementation is to write to it from a BPF program. Note: the BPF program in this change is never actually attached to a cgroup, it is only loaded. The program will be executed manually using BPF_PROG_RUN which is "side-effect free" (it can have side effects on BPF maps, but not on Kernel state, e.g. dropping packets). Bug: 246985031 Test: atest libbpf_android_test Change-Id: Ib9c591218188f5f358a755c8854bc6f87d26af12
64 lines
1.7 KiB
Plaintext
64 lines
1.7 KiB
Plaintext
// Copyright (C) 2021 The Android Open Source Project
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package {
|
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
|
}
|
|
|
|
cc_library_headers {
|
|
name: "bpf_headers",
|
|
vendor_available: true,
|
|
recovery_available: true,
|
|
host_supported: true,
|
|
native_bridge_supported: true,
|
|
header_libs: ["bpf_syscall_wrappers"],
|
|
export_header_lib_headers: ["bpf_syscall_wrappers"],
|
|
export_include_dirs: ["include"],
|
|
cflags: [
|
|
"-Wall",
|
|
"-Werror",
|
|
],
|
|
sdk_version: "30",
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"//apex_available:platform",
|
|
"com.android.tethering",
|
|
"com.android.art.debug",
|
|
],
|
|
}
|
|
|
|
cc_test {
|
|
// TODO: Rename to bpf_map_test and modify .gcls as well.
|
|
name: "libbpf_android_test",
|
|
srcs: [
|
|
"BpfMapTest.cpp",
|
|
"BpfRingbufTest.cpp",
|
|
],
|
|
defaults: ["bpf_defaults"],
|
|
cflags: [
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wno-error=unused-variable",
|
|
],
|
|
header_libs: ["bpf_headers"],
|
|
static_libs: ["libgmock"],
|
|
shared_libs: [
|
|
"libbase",
|
|
"liblog",
|
|
"libutils",
|
|
],
|
|
require_root: true,
|
|
test_suites: ["general-tests"],
|
|
}
|