Skip to content

Helper function bpf_ringbuf_discard

v5.8

Definition

Copyright (c) 2015 The Libbpf Authors. All rights reserved.

Discard reserved ring buffer sample, pointed to by data. If BPF_RB_NO_WAKEUP is specified in flags, no notification of new data availability is sent. If BPF_RB_FORCE_WAKEUP is specified in flags, notification of new data availability is sent unconditionally. If 0 is specified in flags, an adaptive notification of new data availability is sent.

See 'bpf_ringbuf_output()' for the definition of adaptive notification.

Returns

Nothing. Always succeeds.

static void (* const bpf_ringbuf_discard)(void *data, __u64 flags) = (void *) 133;

Usage

This function discards the reserved memory in the ring buffer. The data argument must be a pointer to the reserved memory. The flags argument, similar to bpf_ringbuf_submit, can be set to BPF_RB_NO_WAKEUP, BPF_RB_FORCE_WAKEUP, or 0 to specify how the notification of the discarded data should be handled. This function must be used if space is reserved in the ring buffer but the flow does not lead to bpf_ringbuf_submit.

Program types

This helper call can be used in the following program types:

Example

// Reserve space in the ring buffer
struct ringbuf_data *rb_data = bpf_ringbuf_reserve(&my_ringbuf, sizeof(struct ringbuf_data), 0);
if(!rb_data) {
    // if bpf_ringbuf_reserve fails, print an error message and return
    bpf_printk("bpf_ringbuf_reserve failed\n");
    return 1;
}

if(unhappy_flow) {
    // Discard the reserved data
    bpf_ringbuf_discard(rb_data, 0);
    return 1;
}

// Submit the reserved data
bpf_ringbuf_submit(rb_data, 0);