Skip to content

SCX eBPF macro scx_bpf_exit

v6.12

The scx_bpf_exit macro wraps the scx_bpf_dump_bstr kfunc with variadic arguments instead of an array of u64. To be used from sched_ext_ops.dump and friends.

Definition

#define scx_bpf_dump(fmt, args...)                      \
({                                      \
    scx_bpf_bstr_preamble(fmt, args)                    \
    scx_bpf_dump_bstr(___fmt, ___param, sizeof(___param));           \
    ___scx_bpf_bstr_format_checker(fmt, ##args);                \
})

Usage

This macro can be used to help dump information from the BPF scheduler.

Example

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2022 Meta Platforms, Inc. and affiliates.
 * Copyright (c) 2022 Tejun Heo <tj@kernel.org>
 * Copyright (c) 2022 David Vernet <dvernet@meta.com>
 */

void BPF_STRUCT_OPS(qmap_dump, struct scx_dump_ctx *dctx)
{
    s32 i, pid;

    if (suppress_dump)
        return;

    bpf_for(i, 0, 5) {
        void *fifo;

        if (!(fifo = bpf_map_lookup_elem(&queue_arr, &i)))
            return;

        scx_bpf_dump("QMAP FIFO[%d]:", i);
        bpf_repeat(4096) {
            if (bpf_map_pop_elem(fifo, &pid))
                break;
            scx_bpf_dump(" %d", pid);
        }
        scx_bpf_dump("\n");
    }
}