eBPF for Windows
ebpf_extension.h
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation
2 // SPDX-License-Identifier: MIT
3 #pragma once
4 
5 #include "ebpf_result.h"
6 #include "ebpf_structs.h"
7 #include "ebpf_windows.h"
8 
10 
12 {
13  uint16_t version;
14  uint16_t count;
17 
19  _In_ const void* extension_client_binding_context, _Inout_ void* program_context, _Out_ uint32_t* result);
20 
22  _In_ const void* extension_client_binding_context, size_t state_size, _Out_writes_(state_size) void* state);
23 
25  _In_ const void* extension_client_binding_context,
26  _Inout_ void* program_context,
27  _Out_ uint32_t* result,
28  _In_ const void* state);
29 
31  _In_ const void* extension_client_binding_context, _Inout_ void* state);
32 
34 {
35  uint16_t version;
36  uint16_t count;
42 
43 typedef struct _ebpf_extension_data
44 {
45  uint16_t version;
46  size_t size;
47  const void* data;
49 
51 {
56 
57 /***
58  * The state of the execution context when the eBPF program was invoked.
59  * This is used to cache state that won't change during the execution of
60  * the eBPF program and is expensive to query.
61  */
63 {
64  uint64_t epoch_state[4];
65  union
66  {
67  uint64_t thread;
68  uint32_t cpu;
69  } id;
70  uint8_t current_irql;
71  struct
72  {
73  const void* next_program;
74  uint32_t count;
77 
78 #define EBPF_ATTACH_CLIENT_DATA_VERSION 0
79 #define EBPF_ATTACH_PROVIDER_DATA_VERSION 1
80 #define EBPF_PROGRAM_INFORMATION_PROVIDER_DATA_VERSION 0
81 #define EBPF_MAX_GENERAL_HELPER_FUNCTION 0xFFFF
struct _ebpf_attach_provider_data ebpf_attach_provider_data_t
struct _ebpf_extension_dispatch_table ebpf_extension_dispatch_table_t
struct _ebpf_extension_data ebpf_extension_data_t
struct _ebpf_extension_program_dispatch_table ebpf_extension_program_dispatch_table_t
ebpf_result_t(* _ebpf_extension_dispatch_function)()
Definition: ebpf_extension.h:9
ebpf_result_t(* ebpf_program_batch_begin_invoke_function_t)(const void *extension_client_binding_context, size_t state_size, _Out_writes_(state_size) void *state)
Definition: ebpf_extension.h:21
ebpf_result_t(* ebpf_program_batch_invoke_function_t)(const void *extension_client_binding_context, _Inout_ void *program_context, uint32_t *result, const void *state)
Definition: ebpf_extension.h:24
struct _ebpf_execution_context_state ebpf_execution_context_state_t
ebpf_result_t(* ebpf_program_batch_end_invoke_function_t)(const void *extension_client_binding_context, _Inout_ void *state)
Definition: ebpf_extension.h:30
ebpf_result_t(* ebpf_program_invoke_function_t)(const void *extension_client_binding_context, _Inout_ void *program_context, uint32_t *result)
Definition: ebpf_extension.h:18
enum ebpf_result ebpf_result_t
This file contains eBPF definitions common to eBPF programs, core execution engine as well as eBPF AP...
bpf_link_type
Definition: ebpf_structs.h:239
enum bpf_attach_type bpf_attach_type_t
Definition: ebpf_structs.h:310
GUID ebpf_program_type_t
Definition: ebpf_windows.h:43
Definition: ebpf_extension.h:51
ebpf_program_type_t supported_program_type
Definition: ebpf_extension.h:52
bpf_attach_type_t bpf_attach_type
Definition: ebpf_extension.h:53
enum bpf_link_type link_type
Definition: ebpf_extension.h:54
Definition: ebpf_extension.h:63
union _ebpf_execution_context_state::@6 id
struct _ebpf_execution_context_state::@7 tail_call_state
uint8_t current_irql
Definition: ebpf_extension.h:70
uint32_t count
Definition: ebpf_extension.h:74
uint64_t epoch_state[4]
Definition: ebpf_extension.h:64
uint64_t thread
Definition: ebpf_extension.h:67
const void * next_program
Definition: ebpf_extension.h:73
uint32_t cpu
Definition: ebpf_extension.h:68
Definition: ebpf_extension.h:44
uint16_t version
Definition: ebpf_extension.h:45
size_t size
Definition: ebpf_extension.h:46
const void * data
Definition: ebpf_extension.h:47
Definition: ebpf_extension.h:12
uint16_t version
Version of the dispatch table.
Definition: ebpf_extension.h:13
uint16_t count
Number of entries in the dispatch table.
Definition: ebpf_extension.h:14
_Field_size_(count) _ebpf_extension_dispatch_function function[1]
Definition: ebpf_extension.h:34
ebpf_program_invoke_function_t ebpf_program_invoke_function
Definition: ebpf_extension.h:37
ebpf_program_batch_begin_invoke_function_t ebpf_program_batch_begin_invoke_function
Definition: ebpf_extension.h:38
ebpf_program_batch_end_invoke_function_t ebpf_program_batch_end_invoke_function
Definition: ebpf_extension.h:40
uint16_t version
Version of the dispatch table.
Definition: ebpf_extension.h:35
ebpf_program_batch_invoke_function_t ebpf_program_batch_invoke_function
Definition: ebpf_extension.h:39
uint16_t count
Number of entries in the dispatch table.
Definition: ebpf_extension.h:36