eBPF for Windows
Loading...
Searching...
No Matches
Data Fields
_ebpf_map_client_dispatch_table Struct Reference

#include <ebpf_extension.h>

Data Fields

ebpf_extension_header_t header
 
ebpf_map_find_element_t find_element_function
 
ebpf_epoch_enter_t epoch_enter
 
ebpf_epoch_exit_t epoch_exit
 
ebpf_epoch_allocate_with_tag_t epoch_allocate_with_tag
 
ebpf_epoch_allocate_cache_aligned_with_tag_t epoch_allocate_cache_aligned_with_tag
 
ebpf_epoch_free_t epoch_free
 
ebpf_epoch_free_cache_aligned_t epoch_free_cache_aligned
 

Detailed Description

Dispatch table implemented by the eBPF runtime to provide RCU / epoch operations.

Notes:

Functions epoch_enter and epoch_exit allow a thread to enter and exit an epoch-protected region, which is necessary when calling the epoch memory operations. These functions are re-entrant, but should always be called in pairs.

Below is the list of epoch memory related functions exposed by eBPF runtime:

Each of the above four functions MUST be called within an epoch-protected region (i.e., after ebpf_epoch_enter() and before ebpf_epoch_exit()). Failure to do so may lead to undefined behavior. Provider dispatch function invocations (defined in ebpf_base_map_provider_dispatch_table_t), and BPF helper function callbacks already are epoch-protected, hence these APIs can be directly called in those contexts. If the provider intends to use these APIs outside the above mentioned contexts, it must ensure that the calls are made within an epoch-protected region.

Similarly, find_element_function can only be invoked in an epoch-protected region, as explained above. Calling it from outside an epoch-protected region may lead to undefined behavior.

Field Documentation

◆ epoch_allocate_cache_aligned_with_tag

ebpf_epoch_allocate_cache_aligned_with_tag_t _ebpf_map_client_dispatch_table::epoch_allocate_cache_aligned_with_tag

◆ epoch_allocate_with_tag

ebpf_epoch_allocate_with_tag_t _ebpf_map_client_dispatch_table::epoch_allocate_with_tag

◆ epoch_enter

ebpf_epoch_enter_t _ebpf_map_client_dispatch_table::epoch_enter

◆ epoch_exit

ebpf_epoch_exit_t _ebpf_map_client_dispatch_table::epoch_exit

◆ epoch_free

ebpf_epoch_free_t _ebpf_map_client_dispatch_table::epoch_free

◆ epoch_free_cache_aligned

ebpf_epoch_free_cache_aligned_t _ebpf_map_client_dispatch_table::epoch_free_cache_aligned

◆ find_element_function

ebpf_map_find_element_t _ebpf_map_client_dispatch_table::find_element_function

◆ header

ebpf_extension_header_t _ebpf_map_client_dispatch_table::header

The documentation for this struct was generated from the following file: