diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2022-12-10 02:27:06 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-12-10 02:27:06 +0000 |
commit | a9b54078f4d98b2d738b9e9221e637471db870d9 (patch) | |
tree | d7de12ef60a263005c17f86ff757ddf8495f8b0b | |
parent | bfd31a3c7931a9e0be111a083187bd87417dcd7e (diff) | |
parent | 657482041f81acc686440d1892ce48d9c729d409 (diff) | |
download | bpf-a9b54078f4d98b2d738b9e9221e637471db870d9.tar.gz |
Merge "Add a test BPF program with a ring buffer."
-rw-r--r-- | bpfloader/Android.bp | 7 | ||||
-rw-r--r-- | progs/Android.bp | 9 | ||||
-rw-r--r-- | progs/bpfRingbufProg.c | 40 |
3 files changed, 56 insertions, 0 deletions
diff --git a/bpfloader/Android.bp b/bpfloader/Android.bp index 42cb50c..d3428b0 100644 --- a/bpfloader/Android.bp +++ b/bpfloader/Android.bp @@ -59,4 +59,11 @@ cc_binary { "timeInState.o" ], + product_variables: { + debuggable: { + required: [ + "bpfRingbufProg.o", + ], + }, + } } diff --git a/progs/Android.bp b/progs/Android.bp index aeb04a7..b044eb0 100644 --- a/progs/Android.bp +++ b/progs/Android.bp @@ -26,3 +26,12 @@ cc_library_headers { name: "bpf_prog_headers", export_include_dirs: ["include"], } + +bpf { + name: "bpfRingbufProg.o", + srcs: ["bpfRingbufProg.c"], + cflags: [ + "-Wall", + "-Werror", + ], +} diff --git a/progs/bpfRingbufProg.c b/progs/bpfRingbufProg.c new file mode 100644 index 0000000..99b8345 --- /dev/null +++ b/progs/bpfRingbufProg.c @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2022 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. + */ + +#include "bpf_helpers.h" + +// This can't be easily changed since the program is loaded on boot and may be +// run against tests at a slightly different version. +#define TEST_RINGBUF_MAGIC_NUM 12345 + +// This ring buffer is for testing purposes only. +DEFINE_BPF_RINGBUF_EXT(test_ringbuf, __u64, 4096, AID_ROOT, AID_ROOT, 0660, "", "", false); + +// This program is for test purposes only - it should never be attached to a +// socket, only executed manually with BPF_PROG_RUN. +DEFINE_BPF_PROG_KVER("skfilter/ringbuf_test", AID_ROOT, AID_ROOT, test_ringbuf_prog, KVER(5, 8, 0)) +(void* unused_ctx) { + __u64* output = bpf_test_ringbuf_reserve(); + if (output == NULL) return 1; + + (*output) = TEST_RINGBUF_MAGIC_NUM; + bpf_test_ringbuf_submit(output); + + return 0; +} + +LICENSE("Apache 2.0"); +CRITICAL("BPF Ringbuf test"); |