diff --git a/globals.html b/globals.html
index 03fba8eb0..91ee4a0eb 100644
--- a/globals.html
+++ b/globals.html
@@ -61,10 +61,26 @@
-
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+
+ - a -
as_external_function_t()
: ubpf.h
+
+
+
+ - b -
+
+
+ - e -
+ExtendedJitMode
+: ubpf.h
+
external_function_dispatcher_t
: ubpf.h
@@ -74,12 +90,33 @@
external_function_validate_t
: ubpf.h
+
+
+
+ - j -
+
+
+ - s -
+stack_usage_calculator_t
+: ubpf.h
+
+
+
+
+ - u -
ubpf_bounds_check
: ubpf.h
ubpf_compile()
: ubpf.h
+ubpf_compile_ex()
+: ubpf.h
+
ubpf_copy_jit()
: ubpf.h
@@ -92,12 +129,24 @@
ubpf_destroy()
: ubpf.h
+UBPF_EBPF_NONVOLATILE_SIZE
+: ubpf.h
+
+UBPF_EBPF_STACK_SIZE
+: ubpf.h
+
ubpf_exec()
: ubpf.h
+ubpf_exec_ex()
+: ubpf.h
+
ubpf_get_registers()
: ubpf.h
+ubpf_jit_ex_fn
+: ubpf.h
+
ubpf_jit_fn
: ubpf.h
@@ -122,6 +171,9 @@
ubpf_register_external_dispatcher()
: ubpf.h
+ubpf_register_stack_usage_calculator()
+: ubpf.h
+
ubpf_set_error_print()
: ubpf.h
@@ -140,15 +192,15 @@
ubpf_set_unwind_function_index()
: ubpf.h
-UBPF_STACK_SIZE
-: ubpf.h
-
ubpf_toggle_bounds_check()
: ubpf.h
ubpf_translate()
: ubpf.h
+ubpf_translate_ex()
+: ubpf.h
+
ubpf_unload_code()
: ubpf.h
diff --git a/globals_defs.html b/globals_defs.html
index ca7d8d88d..7e54e9fdd 100644
--- a/globals_defs.html
+++ b/globals_defs.html
@@ -62,15 +62,18 @@
+UBPF_EBPF_NONVOLATILE_SIZE
+: ubpf.h
+
+UBPF_EBPF_STACK_SIZE
+: ubpf.h
+
UBPF_MAX_CALL_DEPTH
: ubpf.h
UBPF_MAX_INSTS
: ubpf.h
-UBPF_STACK_SIZE
-: ubpf.h
-
diff --git a/globals_enum.html b/globals_enum.html
new file mode 100644
index 000000000..0939cadd9
--- /dev/null
+++ b/globals_enum.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+uBPF: Globals
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/globals_eval.html b/globals_eval.html
new file mode 100644
index 000000000..0814f6537
--- /dev/null
+++ b/globals_eval.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
uBPF: Globals
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/globals_func.html b/globals_func.html
index 01008a743..01c41a086 100644
--- a/globals_func.html
+++ b/globals_func.html
@@ -68,6 +68,9 @@
ubpf_compile()
: ubpf.h
+
ubpf_compile_ex()
+: ubpf.h
+
ubpf_copy_jit()
: ubpf.h
@@ -80,6 +83,9 @@
ubpf_exec()
: ubpf.h
+
ubpf_exec_ex()
+: ubpf.h
+
ubpf_get_registers()
: ubpf.h
@@ -98,6 +104,9 @@
ubpf_register_external_dispatcher()
: ubpf.h
+
ubpf_register_stack_usage_calculator()
+: ubpf.h
+
ubpf_set_error_print()
: ubpf.h
@@ -122,6 +131,9 @@
ubpf_translate()
: ubpf.h
+
ubpf_translate_ex()
+: ubpf.h
+
ubpf_unload_code()
: ubpf.h
diff --git a/globals_type.html b/globals_type.html
index f47b2e13e..93dc2f7e6 100644
--- a/globals_type.html
+++ b/globals_type.html
@@ -71,12 +71,18 @@
external_function_validate_t
: ubpf.h
+
stack_usage_calculator_t
+: ubpf.h
+
ubpf_bounds_check
: ubpf.h
ubpf_data_relocation
: ubpf.h
+
ubpf_jit_ex_fn
+: ubpf.h
+
ubpf_jit_fn
: ubpf.h
diff --git a/menudata.js b/menudata.js
index 209ea71c3..969f60da9 100644
--- a/menudata.js
+++ b/menudata.js
@@ -27,7 +27,15 @@ var menudata={children:[
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"},
{text:"Globals",url:"globals.html",children:[
-{text:"All",url:"globals.html"},
+{text:"All",url:"globals.html",children:[
+{text:"a",url:"globals.html#index_a"},
+{text:"b",url:"globals.html#index_b"},
+{text:"e",url:"globals.html#index_e"},
+{text:"j",url:"globals.html#index_j"},
+{text:"s",url:"globals.html#index_s"},
+{text:"u",url:"globals.html#index_u"}]},
{text:"Functions",url:"globals_func.html"},
{text:"Typedefs",url:"globals_type.html"},
+{text:"Enumerations",url:"globals_enum.html"},
+{text:"Enumerator",url:"globals_eval.html"},
{text:"Macros",url:"globals_defs.html"}]}]}]}
diff --git a/search/all_1.js b/search/all_1.js
index 665b548c0..f9df9b661 100644
--- a/search/all_1.js
+++ b/search/all_1.js
@@ -1,6 +1,4 @@
var searchData=
[
- ['external_5ffunction_5fdispatcher_5ft_1',['external_function_dispatcher_t',['../ubpf_8h.html#aa819644ac2adf81271cf703f9eb5614b',1,'ubpf.h']]],
- ['external_5ffunction_5ft_2',['external_function_t',['../ubpf_8h.html#a97c06ae6f43ae6e0cbca64ac1e70bc30',1,'ubpf.h']]],
- ['external_5ffunction_5fvalidate_5ft_3',['external_function_validate_t',['../ubpf_8h.html#a924a4a1a3e782846945d6adbabbcbb9c',1,'ubpf.h']]]
+ ['basicjitmode_1',['BasicJitMode',['../ubpf_8h.html#a4be1055c33e64a9f81abf25f8b5ddedda03f63951ae56be0eb19aae34d83706f8',1,'ubpf.h']]]
];
diff --git a/search/all_2.js b/search/all_2.js
index 1082e3c66..910a57d56 100644
--- a/search/all_2.js
+++ b/search/all_2.js
@@ -1,4 +1,7 @@
var searchData=
[
- ['mainpage_2edox_4',['mainpage.dox',['../mainpage_8dox.html',1,'']]]
+ ['extendedjitmode_2',['ExtendedJitMode',['../ubpf_8h.html#a4be1055c33e64a9f81abf25f8b5ddedda81527be9d9bf3b5e45d8b59a4d1f19fd',1,'ubpf.h']]],
+ ['external_5ffunction_5fdispatcher_5ft_3',['external_function_dispatcher_t',['../ubpf_8h.html#aa819644ac2adf81271cf703f9eb5614b',1,'ubpf.h']]],
+ ['external_5ffunction_5ft_4',['external_function_t',['../ubpf_8h.html#a97c06ae6f43ae6e0cbca64ac1e70bc30',1,'ubpf.h']]],
+ ['external_5ffunction_5fvalidate_5ft_5',['external_function_validate_t',['../ubpf_8h.html#a924a4a1a3e782846945d6adbabbcbb9c',1,'ubpf.h']]]
];
diff --git a/search/all_3.js b/search/all_3.js
index 75210241d..c2e6b49c3 100644
--- a/search/all_3.js
+++ b/search/all_3.js
@@ -1,30 +1,4 @@
var searchData=
[
- ['ubpf_2eh_5',['ubpf.h',['../ubpf_8h.html',1,'']]],
- ['ubpf_5fbounds_5fcheck_6',['ubpf_bounds_check',['../ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699',1,'ubpf.h']]],
- ['ubpf_5fcompile_7',['ubpf_compile',['../ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba',1,'ubpf.h']]],
- ['ubpf_5fcopy_5fjit_8',['ubpf_copy_jit',['../ubpf_8h.html#aa2604f93223a8f076b503ba144a6b1ce',1,'ubpf.h']]],
- ['ubpf_5fcreate_9',['ubpf_create',['../ubpf_8h.html#a845988047e3c2fe9713e2f8a404d0751',1,'ubpf.h']]],
- ['ubpf_5fdata_5frelocation_10',['ubpf_data_relocation',['../ubpf_8h.html#a70fb644d080e8448c1db17bb99858391',1,'ubpf.h']]],
- ['ubpf_5fdestroy_11',['ubpf_destroy',['../ubpf_8h.html#ae69dfc8e94c60e15a5db25fb6316274f',1,'ubpf.h']]],
- ['ubpf_5fexec_12',['ubpf_exec',['../ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95',1,'ubpf.h']]],
- ['ubpf_5fget_5fregisters_13',['ubpf_get_registers',['../ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4',1,'ubpf.h']]],
- ['ubpf_5fjit_5ffn_14',['ubpf_jit_fn',['../ubpf_8h.html#a6334115c4408267ec35087ade6128fa0',1,'ubpf.h']]],
- ['ubpf_5fload_15',['ubpf_load',['../ubpf_8h.html#a8d32748c100c98d69dba8dcf0e9d4d0d',1,'ubpf.h']]],
- ['ubpf_5fmax_5fcall_5fdepth_16',['UBPF_MAX_CALL_DEPTH',['../ubpf_8h.html#a23e70b5f29f0296e69a72ec5cfc588d8',1,'ubpf.h']]],
- ['ubpf_5fmax_5finsts_17',['UBPF_MAX_INSTS',['../ubpf_8h.html#a7b029668bfe717c5d7b33fba3847a00f',1,'ubpf.h']]],
- ['ubpf_5fregister_18',['ubpf_register',['../ubpf_8h.html#a398c1c9b6d59876005eb64bbfab7b2b4',1,'ubpf.h']]],
- ['ubpf_5fregister_5fdata_5fbounds_5fcheck_19',['ubpf_register_data_bounds_check',['../ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03',1,'ubpf.h']]],
- ['ubpf_5fregister_5fdata_5frelocation_20',['ubpf_register_data_relocation',['../ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611',1,'ubpf.h']]],
- ['ubpf_5fregister_5fexternal_5fdispatcher_21',['ubpf_register_external_dispatcher',['../ubpf_8h.html#a27fbf5d30614b9c4b618209d681c3653',1,'ubpf.h']]],
- ['ubpf_5fset_5ferror_5fprint_22',['ubpf_set_error_print',['../ubpf_8h.html#ae7e25aeeb15d5dc04a58f99239c4774c',1,'ubpf.h']]],
- ['ubpf_5fset_5finstruction_5flimit_23',['ubpf_set_instruction_limit',['../ubpf_8h.html#adfaef65d4add64487f09c0bd1d0a08df',1,'ubpf.h']]],
- ['ubpf_5fset_5fjit_5fcode_5fsize_24',['ubpf_set_jit_code_size',['../ubpf_8h.html#a96cdff7433769540c61a1cf41a0c241a',1,'ubpf.h']]],
- ['ubpf_5fset_5fpointer_5fsecret_25',['ubpf_set_pointer_secret',['../ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701',1,'ubpf.h']]],
- ['ubpf_5fset_5fregisters_26',['ubpf_set_registers',['../ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f',1,'ubpf.h']]],
- ['ubpf_5fset_5funwind_5ffunction_5findex_27',['ubpf_set_unwind_function_index',['../ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3',1,'ubpf.h']]],
- ['ubpf_5fstack_5fsize_28',['UBPF_STACK_SIZE',['../ubpf_8h.html#ab41a6986b0045cc2e5c84a75d08c7a12',1,'ubpf.h']]],
- ['ubpf_5ftoggle_5fbounds_5fcheck_29',['ubpf_toggle_bounds_check',['../ubpf_8h.html#a80938918080712ac0667359fd163f1a5',1,'ubpf.h']]],
- ['ubpf_5ftranslate_30',['ubpf_translate',['../ubpf_8h.html#ab34e26c0a46366345df354ce992448c4',1,'ubpf.h']]],
- ['ubpf_5funload_5fcode_31',['ubpf_unload_code',['../ubpf_8h.html#ae95b334d7eeb18072da3b9f4eeb66c25',1,'ubpf.h']]]
+ ['jitmode_6',['JitMode',['../ubpf_8h.html#a4be1055c33e64a9f81abf25f8b5ddedd',1,'ubpf.h']]]
];
diff --git a/search/all_4.html b/search/all_4.html
new file mode 100644
index 000000000..fc40463c8
--- /dev/null
+++ b/search/all_4.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/all_4.js b/search/all_4.js
new file mode 100644
index 000000000..de6692ac7
--- /dev/null
+++ b/search/all_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['mainpage_2edox_7',['mainpage.dox',['../mainpage_8dox.html',1,'']]]
+];
diff --git a/search/all_5.html b/search/all_5.html
new file mode 100644
index 000000000..9dd9344b0
--- /dev/null
+++ b/search/all_5.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/all_5.js b/search/all_5.js
new file mode 100644
index 000000000..49f739dd9
--- /dev/null
+++ b/search/all_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['stack_5fusage_5fcalculator_5ft_8',['stack_usage_calculator_t',['../ubpf_8h.html#a087420d1735791ffa6c5c436f52da00e',1,'ubpf.h']]]
+];
diff --git a/search/all_6.html b/search/all_6.html
new file mode 100644
index 000000000..f1e516d75
--- /dev/null
+++ b/search/all_6.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/all_6.js b/search/all_6.js
new file mode 100644
index 000000000..034cb2fb9
--- /dev/null
+++ b/search/all_6.js
@@ -0,0 +1,36 @@
+var searchData=
+[
+ ['ubpf_2eh_9',['ubpf.h',['../ubpf_8h.html',1,'']]],
+ ['ubpf_5fbounds_5fcheck_10',['ubpf_bounds_check',['../ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699',1,'ubpf.h']]],
+ ['ubpf_5fcompile_11',['ubpf_compile',['../ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba',1,'ubpf.h']]],
+ ['ubpf_5fcompile_5fex_12',['ubpf_compile_ex',['../ubpf_8h.html#a281772f3e99c3d8505751297c51aa22e',1,'ubpf.h']]],
+ ['ubpf_5fcopy_5fjit_13',['ubpf_copy_jit',['../ubpf_8h.html#aa2604f93223a8f076b503ba144a6b1ce',1,'ubpf.h']]],
+ ['ubpf_5fcreate_14',['ubpf_create',['../ubpf_8h.html#a845988047e3c2fe9713e2f8a404d0751',1,'ubpf.h']]],
+ ['ubpf_5fdata_5frelocation_15',['ubpf_data_relocation',['../ubpf_8h.html#a70fb644d080e8448c1db17bb99858391',1,'ubpf.h']]],
+ ['ubpf_5fdestroy_16',['ubpf_destroy',['../ubpf_8h.html#ae69dfc8e94c60e15a5db25fb6316274f',1,'ubpf.h']]],
+ ['ubpf_5febpf_5fnonvolatile_5fsize_17',['UBPF_EBPF_NONVOLATILE_SIZE',['../ubpf_8h.html#ae89d6c1d7d2bda6006e9969e731826a3',1,'ubpf.h']]],
+ ['ubpf_5febpf_5fstack_5fsize_18',['UBPF_EBPF_STACK_SIZE',['../ubpf_8h.html#a91fdfd9d55e9ffcadcfe27a87340eace',1,'ubpf.h']]],
+ ['ubpf_5fexec_19',['ubpf_exec',['../ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95',1,'ubpf.h']]],
+ ['ubpf_5fexec_5fex_20',['ubpf_exec_ex',['../ubpf_8h.html#a6ded3ae17d5879d7c19f32fa52cbbe26',1,'ubpf.h']]],
+ ['ubpf_5fget_5fregisters_21',['ubpf_get_registers',['../ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4',1,'ubpf.h']]],
+ ['ubpf_5fjit_5fex_5ffn_22',['ubpf_jit_ex_fn',['../ubpf_8h.html#a30c41270d593fc7ffc2161f03f8c0b5b',1,'ubpf.h']]],
+ ['ubpf_5fjit_5ffn_23',['ubpf_jit_fn',['../ubpf_8h.html#a6334115c4408267ec35087ade6128fa0',1,'ubpf.h']]],
+ ['ubpf_5fload_24',['ubpf_load',['../ubpf_8h.html#a8d32748c100c98d69dba8dcf0e9d4d0d',1,'ubpf.h']]],
+ ['ubpf_5fmax_5fcall_5fdepth_25',['UBPF_MAX_CALL_DEPTH',['../ubpf_8h.html#a23e70b5f29f0296e69a72ec5cfc588d8',1,'ubpf.h']]],
+ ['ubpf_5fmax_5finsts_26',['UBPF_MAX_INSTS',['../ubpf_8h.html#a7b029668bfe717c5d7b33fba3847a00f',1,'ubpf.h']]],
+ ['ubpf_5fregister_27',['ubpf_register',['../ubpf_8h.html#a398c1c9b6d59876005eb64bbfab7b2b4',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fdata_5fbounds_5fcheck_28',['ubpf_register_data_bounds_check',['../ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fdata_5frelocation_29',['ubpf_register_data_relocation',['../ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fexternal_5fdispatcher_30',['ubpf_register_external_dispatcher',['../ubpf_8h.html#a27fbf5d30614b9c4b618209d681c3653',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fstack_5fusage_5fcalculator_31',['ubpf_register_stack_usage_calculator',['../ubpf_8h.html#aacb195bc0c95663214fe205613ff1c9a',1,'ubpf.h']]],
+ ['ubpf_5fset_5ferror_5fprint_32',['ubpf_set_error_print',['../ubpf_8h.html#ae7e25aeeb15d5dc04a58f99239c4774c',1,'ubpf.h']]],
+ ['ubpf_5fset_5finstruction_5flimit_33',['ubpf_set_instruction_limit',['../ubpf_8h.html#adfaef65d4add64487f09c0bd1d0a08df',1,'ubpf.h']]],
+ ['ubpf_5fset_5fjit_5fcode_5fsize_34',['ubpf_set_jit_code_size',['../ubpf_8h.html#a96cdff7433769540c61a1cf41a0c241a',1,'ubpf.h']]],
+ ['ubpf_5fset_5fpointer_5fsecret_35',['ubpf_set_pointer_secret',['../ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701',1,'ubpf.h']]],
+ ['ubpf_5fset_5fregisters_36',['ubpf_set_registers',['../ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f',1,'ubpf.h']]],
+ ['ubpf_5fset_5funwind_5ffunction_5findex_37',['ubpf_set_unwind_function_index',['../ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3',1,'ubpf.h']]],
+ ['ubpf_5ftoggle_5fbounds_5fcheck_38',['ubpf_toggle_bounds_check',['../ubpf_8h.html#a80938918080712ac0667359fd163f1a5',1,'ubpf.h']]],
+ ['ubpf_5ftranslate_39',['ubpf_translate',['../ubpf_8h.html#ab34e26c0a46366345df354ce992448c4',1,'ubpf.h']]],
+ ['ubpf_5ftranslate_5fex_40',['ubpf_translate_ex',['../ubpf_8h.html#afb2b46e62e54e7e8b81303def1014eb0',1,'ubpf.h']]],
+ ['ubpf_5funload_5fcode_41',['ubpf_unload_code',['../ubpf_8h.html#ae95b334d7eeb18072da3b9f4eeb66c25',1,'ubpf.h']]]
+];
diff --git a/search/defines_0.js b/search/defines_0.js
index 414027a23..165777b62 100644
--- a/search/defines_0.js
+++ b/search/defines_0.js
@@ -1,6 +1,7 @@
var searchData=
[
- ['ubpf_5fmax_5fcall_5fdepth_61',['UBPF_MAX_CALL_DEPTH',['../ubpf_8h.html#a23e70b5f29f0296e69a72ec5cfc588d8',1,'ubpf.h']]],
- ['ubpf_5fmax_5finsts_62',['UBPF_MAX_INSTS',['../ubpf_8h.html#a7b029668bfe717c5d7b33fba3847a00f',1,'ubpf.h']]],
- ['ubpf_5fstack_5fsize_63',['UBPF_STACK_SIZE',['../ubpf_8h.html#ab41a6986b0045cc2e5c84a75d08c7a12',1,'ubpf.h']]]
+ ['ubpf_5febpf_5fnonvolatile_5fsize_80',['UBPF_EBPF_NONVOLATILE_SIZE',['../ubpf_8h.html#ae89d6c1d7d2bda6006e9969e731826a3',1,'ubpf.h']]],
+ ['ubpf_5febpf_5fstack_5fsize_81',['UBPF_EBPF_STACK_SIZE',['../ubpf_8h.html#a91fdfd9d55e9ffcadcfe27a87340eace',1,'ubpf.h']]],
+ ['ubpf_5fmax_5fcall_5fdepth_82',['UBPF_MAX_CALL_DEPTH',['../ubpf_8h.html#a23e70b5f29f0296e69a72ec5cfc588d8',1,'ubpf.h']]],
+ ['ubpf_5fmax_5finsts_83',['UBPF_MAX_INSTS',['../ubpf_8h.html#a7b029668bfe717c5d7b33fba3847a00f',1,'ubpf.h']]]
];
diff --git a/search/enums_0.html b/search/enums_0.html
new file mode 100644
index 000000000..141fff57b
--- /dev/null
+++ b/search/enums_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/enums_0.js b/search/enums_0.js
new file mode 100644
index 000000000..a26bd77ca
--- /dev/null
+++ b/search/enums_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['jitmode_77',['JitMode',['../ubpf_8h.html#a4be1055c33e64a9f81abf25f8b5ddedd',1,'ubpf.h']]]
+];
diff --git a/search/enumvalues_0.html b/search/enumvalues_0.html
new file mode 100644
index 000000000..0d131d95b
--- /dev/null
+++ b/search/enumvalues_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js
new file mode 100644
index 000000000..0bc50db2e
--- /dev/null
+++ b/search/enumvalues_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['basicjitmode_78',['BasicJitMode',['../ubpf_8h.html#a4be1055c33e64a9f81abf25f8b5ddedda03f63951ae56be0eb19aae34d83706f8',1,'ubpf.h']]]
+];
diff --git a/search/enumvalues_1.html b/search/enumvalues_1.html
new file mode 100644
index 000000000..cd9187ab3
--- /dev/null
+++ b/search/enumvalues_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js
new file mode 100644
index 000000000..5c9d2add2
--- /dev/null
+++ b/search/enumvalues_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['extendedjitmode_79',['ExtendedJitMode',['../ubpf_8h.html#a4be1055c33e64a9f81abf25f8b5ddedda81527be9d9bf3b5e45d8b59a4d1f19fd',1,'ubpf.h']]]
+];
diff --git a/search/files_0.js b/search/files_0.js
index 7d1977cf3..9520674c7 100644
--- a/search/files_0.js
+++ b/search/files_0.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['mainpage_2edox_32',['mainpage.dox',['../mainpage_8dox.html',1,'']]]
+ ['mainpage_2edox_42',['mainpage.dox',['../mainpage_8dox.html',1,'']]]
];
diff --git a/search/files_1.js b/search/files_1.js
index 9d5e35acb..0a3df1bc6 100644
--- a/search/files_1.js
+++ b/search/files_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['ubpf_2eh_33',['ubpf.h',['../ubpf_8h.html',1,'']]]
+ ['ubpf_2eh_43',['ubpf.h',['../ubpf_8h.html',1,'']]]
];
diff --git a/search/functions_0.js b/search/functions_0.js
index 7a2949c74..92d304414 100644
--- a/search/functions_0.js
+++ b/search/functions_0.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['as_5fexternal_5ffunction_5ft_34',['as_external_function_t',['../ubpf_8h.html#a53971fe3966198c6fec238d81d94bfe8',1,'ubpf.h']]]
+ ['as_5fexternal_5ffunction_5ft_44',['as_external_function_t',['../ubpf_8h.html#a53971fe3966198c6fec238d81d94bfe8',1,'ubpf.h']]]
];
diff --git a/search/functions_1.js b/search/functions_1.js
index 4ca7d9171..3dfb5ff54 100644
--- a/search/functions_1.js
+++ b/search/functions_1.js
@@ -1,23 +1,27 @@
var searchData=
[
- ['ubpf_5fcompile_35',['ubpf_compile',['../ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba',1,'ubpf.h']]],
- ['ubpf_5fcopy_5fjit_36',['ubpf_copy_jit',['../ubpf_8h.html#aa2604f93223a8f076b503ba144a6b1ce',1,'ubpf.h']]],
- ['ubpf_5fcreate_37',['ubpf_create',['../ubpf_8h.html#a845988047e3c2fe9713e2f8a404d0751',1,'ubpf.h']]],
- ['ubpf_5fdestroy_38',['ubpf_destroy',['../ubpf_8h.html#ae69dfc8e94c60e15a5db25fb6316274f',1,'ubpf.h']]],
- ['ubpf_5fexec_39',['ubpf_exec',['../ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95',1,'ubpf.h']]],
- ['ubpf_5fget_5fregisters_40',['ubpf_get_registers',['../ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4',1,'ubpf.h']]],
- ['ubpf_5fload_41',['ubpf_load',['../ubpf_8h.html#a8d32748c100c98d69dba8dcf0e9d4d0d',1,'ubpf.h']]],
- ['ubpf_5fregister_42',['ubpf_register',['../ubpf_8h.html#a398c1c9b6d59876005eb64bbfab7b2b4',1,'ubpf.h']]],
- ['ubpf_5fregister_5fdata_5fbounds_5fcheck_43',['ubpf_register_data_bounds_check',['../ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03',1,'ubpf.h']]],
- ['ubpf_5fregister_5fdata_5frelocation_44',['ubpf_register_data_relocation',['../ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611',1,'ubpf.h']]],
- ['ubpf_5fregister_5fexternal_5fdispatcher_45',['ubpf_register_external_dispatcher',['../ubpf_8h.html#a27fbf5d30614b9c4b618209d681c3653',1,'ubpf.h']]],
- ['ubpf_5fset_5ferror_5fprint_46',['ubpf_set_error_print',['../ubpf_8h.html#ae7e25aeeb15d5dc04a58f99239c4774c',1,'ubpf.h']]],
- ['ubpf_5fset_5finstruction_5flimit_47',['ubpf_set_instruction_limit',['../ubpf_8h.html#adfaef65d4add64487f09c0bd1d0a08df',1,'ubpf.h']]],
- ['ubpf_5fset_5fjit_5fcode_5fsize_48',['ubpf_set_jit_code_size',['../ubpf_8h.html#a96cdff7433769540c61a1cf41a0c241a',1,'ubpf.h']]],
- ['ubpf_5fset_5fpointer_5fsecret_49',['ubpf_set_pointer_secret',['../ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701',1,'ubpf.h']]],
- ['ubpf_5fset_5fregisters_50',['ubpf_set_registers',['../ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f',1,'ubpf.h']]],
- ['ubpf_5fset_5funwind_5ffunction_5findex_51',['ubpf_set_unwind_function_index',['../ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3',1,'ubpf.h']]],
- ['ubpf_5ftoggle_5fbounds_5fcheck_52',['ubpf_toggle_bounds_check',['../ubpf_8h.html#a80938918080712ac0667359fd163f1a5',1,'ubpf.h']]],
- ['ubpf_5ftranslate_53',['ubpf_translate',['../ubpf_8h.html#ab34e26c0a46366345df354ce992448c4',1,'ubpf.h']]],
- ['ubpf_5funload_5fcode_54',['ubpf_unload_code',['../ubpf_8h.html#ae95b334d7eeb18072da3b9f4eeb66c25',1,'ubpf.h']]]
+ ['ubpf_5fcompile_45',['ubpf_compile',['../ubpf_8h.html#a67b901bf6d169b6b28f818f15bd17cba',1,'ubpf.h']]],
+ ['ubpf_5fcompile_5fex_46',['ubpf_compile_ex',['../ubpf_8h.html#a281772f3e99c3d8505751297c51aa22e',1,'ubpf.h']]],
+ ['ubpf_5fcopy_5fjit_47',['ubpf_copy_jit',['../ubpf_8h.html#aa2604f93223a8f076b503ba144a6b1ce',1,'ubpf.h']]],
+ ['ubpf_5fcreate_48',['ubpf_create',['../ubpf_8h.html#a845988047e3c2fe9713e2f8a404d0751',1,'ubpf.h']]],
+ ['ubpf_5fdestroy_49',['ubpf_destroy',['../ubpf_8h.html#ae69dfc8e94c60e15a5db25fb6316274f',1,'ubpf.h']]],
+ ['ubpf_5fexec_50',['ubpf_exec',['../ubpf_8h.html#a1ce3eb22d45ec43436758a139ffc8c95',1,'ubpf.h']]],
+ ['ubpf_5fexec_5fex_51',['ubpf_exec_ex',['../ubpf_8h.html#a6ded3ae17d5879d7c19f32fa52cbbe26',1,'ubpf.h']]],
+ ['ubpf_5fget_5fregisters_52',['ubpf_get_registers',['../ubpf_8h.html#a2e649a921bff795712a97d3ad849f6e4',1,'ubpf.h']]],
+ ['ubpf_5fload_53',['ubpf_load',['../ubpf_8h.html#a8d32748c100c98d69dba8dcf0e9d4d0d',1,'ubpf.h']]],
+ ['ubpf_5fregister_54',['ubpf_register',['../ubpf_8h.html#a398c1c9b6d59876005eb64bbfab7b2b4',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fdata_5fbounds_5fcheck_55',['ubpf_register_data_bounds_check',['../ubpf_8h.html#a286aa9da7688d1327756e967eafc2f03',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fdata_5frelocation_56',['ubpf_register_data_relocation',['../ubpf_8h.html#a6ce8c1133902da4629c53aa82c159611',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fexternal_5fdispatcher_57',['ubpf_register_external_dispatcher',['../ubpf_8h.html#a27fbf5d30614b9c4b618209d681c3653',1,'ubpf.h']]],
+ ['ubpf_5fregister_5fstack_5fusage_5fcalculator_58',['ubpf_register_stack_usage_calculator',['../ubpf_8h.html#aacb195bc0c95663214fe205613ff1c9a',1,'ubpf.h']]],
+ ['ubpf_5fset_5ferror_5fprint_59',['ubpf_set_error_print',['../ubpf_8h.html#ae7e25aeeb15d5dc04a58f99239c4774c',1,'ubpf.h']]],
+ ['ubpf_5fset_5finstruction_5flimit_60',['ubpf_set_instruction_limit',['../ubpf_8h.html#adfaef65d4add64487f09c0bd1d0a08df',1,'ubpf.h']]],
+ ['ubpf_5fset_5fjit_5fcode_5fsize_61',['ubpf_set_jit_code_size',['../ubpf_8h.html#a96cdff7433769540c61a1cf41a0c241a',1,'ubpf.h']]],
+ ['ubpf_5fset_5fpointer_5fsecret_62',['ubpf_set_pointer_secret',['../ubpf_8h.html#a3257e0611c177eeaba7053e2eca92701',1,'ubpf.h']]],
+ ['ubpf_5fset_5fregisters_63',['ubpf_set_registers',['../ubpf_8h.html#aeb0990b88e11d2a0ba89fbaf8086cc0f',1,'ubpf.h']]],
+ ['ubpf_5fset_5funwind_5ffunction_5findex_64',['ubpf_set_unwind_function_index',['../ubpf_8h.html#a0046484ecdb72363d0c5ae710e7b96c3',1,'ubpf.h']]],
+ ['ubpf_5ftoggle_5fbounds_5fcheck_65',['ubpf_toggle_bounds_check',['../ubpf_8h.html#a80938918080712ac0667359fd163f1a5',1,'ubpf.h']]],
+ ['ubpf_5ftranslate_66',['ubpf_translate',['../ubpf_8h.html#ab34e26c0a46366345df354ce992448c4',1,'ubpf.h']]],
+ ['ubpf_5ftranslate_5fex_67',['ubpf_translate_ex',['../ubpf_8h.html#afb2b46e62e54e7e8b81303def1014eb0',1,'ubpf.h']]],
+ ['ubpf_5funload_5fcode_68',['ubpf_unload_code',['../ubpf_8h.html#ae95b334d7eeb18072da3b9f4eeb66c25',1,'ubpf.h']]]
];
diff --git a/search/searchdata.js b/search/searchdata.js
index 9a25dc784..1be2988a8 100644
--- a/search/searchdata.js
+++ b/search/searchdata.js
@@ -1,10 +1,12 @@
var indexSectionsWithContent =
{
- 0: "aemu",
+ 0: "abejmsu",
1: "mu",
2: "au",
- 3: "eu",
- 4: "u"
+ 3: "esu",
+ 4: "j",
+ 5: "be",
+ 6: "u"
};
var indexSectionNames =
@@ -13,7 +15,9 @@ var indexSectionNames =
1: "files",
2: "functions",
3: "typedefs",
- 4: "defines"
+ 4: "enums",
+ 5: "enumvalues",
+ 6: "defines"
};
var indexSectionLabels =
@@ -22,6 +26,8 @@ var indexSectionLabels =
1: "Files",
2: "Functions",
3: "Typedefs",
- 4: "Macros"
+ 4: "Enumerations",
+ 5: "Enumerator",
+ 6: "Macros"
};
diff --git a/search/typedefs_0.js b/search/typedefs_0.js
index 0b4a86125..7156cb328 100644
--- a/search/typedefs_0.js
+++ b/search/typedefs_0.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['external_5ffunction_5fdispatcher_5ft_55',['external_function_dispatcher_t',['../ubpf_8h.html#aa819644ac2adf81271cf703f9eb5614b',1,'ubpf.h']]],
- ['external_5ffunction_5ft_56',['external_function_t',['../ubpf_8h.html#a97c06ae6f43ae6e0cbca64ac1e70bc30',1,'ubpf.h']]],
- ['external_5ffunction_5fvalidate_5ft_57',['external_function_validate_t',['../ubpf_8h.html#a924a4a1a3e782846945d6adbabbcbb9c',1,'ubpf.h']]]
+ ['external_5ffunction_5fdispatcher_5ft_69',['external_function_dispatcher_t',['../ubpf_8h.html#aa819644ac2adf81271cf703f9eb5614b',1,'ubpf.h']]],
+ ['external_5ffunction_5ft_70',['external_function_t',['../ubpf_8h.html#a97c06ae6f43ae6e0cbca64ac1e70bc30',1,'ubpf.h']]],
+ ['external_5ffunction_5fvalidate_5ft_71',['external_function_validate_t',['../ubpf_8h.html#a924a4a1a3e782846945d6adbabbcbb9c',1,'ubpf.h']]]
];
diff --git a/search/typedefs_1.js b/search/typedefs_1.js
index ae15f0646..9cf10f89d 100644
--- a/search/typedefs_1.js
+++ b/search/typedefs_1.js
@@ -1,6 +1,4 @@
var searchData=
[
- ['ubpf_5fbounds_5fcheck_58',['ubpf_bounds_check',['../ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699',1,'ubpf.h']]],
- ['ubpf_5fdata_5frelocation_59',['ubpf_data_relocation',['../ubpf_8h.html#a70fb644d080e8448c1db17bb99858391',1,'ubpf.h']]],
- ['ubpf_5fjit_5ffn_60',['ubpf_jit_fn',['../ubpf_8h.html#a6334115c4408267ec35087ade6128fa0',1,'ubpf.h']]]
+ ['stack_5fusage_5fcalculator_5ft_72',['stack_usage_calculator_t',['../ubpf_8h.html#a087420d1735791ffa6c5c436f52da00e',1,'ubpf.h']]]
];
diff --git a/search/typedefs_2.html b/search/typedefs_2.html
new file mode 100644
index 000000000..6835ee65b
--- /dev/null
+++ b/search/typedefs_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/search/typedefs_2.js b/search/typedefs_2.js
new file mode 100644
index 000000000..54f053f2a
--- /dev/null
+++ b/search/typedefs_2.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['ubpf_5fbounds_5fcheck_73',['ubpf_bounds_check',['../ubpf_8h.html#a64bd2f640f675e3eeff48ea52583d699',1,'ubpf.h']]],
+ ['ubpf_5fdata_5frelocation_74',['ubpf_data_relocation',['../ubpf_8h.html#a70fb644d080e8448c1db17bb99858391',1,'ubpf.h']]],
+ ['ubpf_5fjit_5fex_5ffn_75',['ubpf_jit_ex_fn',['../ubpf_8h.html#a30c41270d593fc7ffc2161f03f8c0b5b',1,'ubpf.h']]],
+ ['ubpf_5fjit_5ffn_76',['ubpf_jit_fn',['../ubpf_8h.html#a6334115c4408267ec35087ade6128fa0',1,'ubpf.h']]]
+];
diff --git a/ubpf_8h.html b/ubpf_8h.html
index 6cfd09090..b724d4a9c 100644
--- a/ubpf_8h.html
+++ b/ubpf_8h.html
@@ -68,6 +68,7 @@
@@ -86,9 +87,11 @@
#define UBPF_MAX_INSTS 65536
Default maximum number of instructions that a program can contain. More...
-
#define UBPF_STACK_SIZE 512
-
Default stack size for the VM. Must be divisible by 16. More...
-
+
#define UBPF_EBPF_STACK_SIZE 512
+
Default stack size for the eBPF program. Must be divisible by 16. More...
+
+
#define UBPF_EBPF_NONVOLATILE_SIZE (sizeof(uint64_t) * 5)
+
#define UBPF_MAX_CALL_DEPTH 10
Default maximum number of nested calls in the VM. More...
@@ -98,6 +101,9 @@
typedef uint64_t(* ubpf_jit_fn ) (void *mem, size_t mem_len)
Opaque type for a uBPF JIT compiled function. More...
+
typedef uint64_t(* ubpf_jit_ex_fn ) (void *mem, size_t mem_len, uint8_t *stack, size_t stack_len)
+
Opaque type for a uBPF JIT compiled function with external stack. More...
+
typedef uint64_t(* external_function_t ) (uint64_t p0, uint64_t p1, uint64_t p2, uint64_t p3, uint64_t p4)
The type of an external function. More...
@@ -107,12 +113,23 @@
typedef bool(* external_function_validate_t ) (unsigned int index, const struct ubpf_vm *vm)
The type of an external helper validation function. More...
+
typedef int(* stack_usage_calculator_t ) (const struct ubpf_vm *vm, uint16_t pc, void *cookie)
+
The type of a stack usage calculator callback function. More...
+
typedef uint64_t(* ubpf_data_relocation ) (void *user_context, const uint8_t *data, uint64_t data_size, const char *symbol_name, uint64_t symbol_offset, uint64_t symbol_size)
Data relocation function that is called by the VM when it encounters a R_BPF_64_64 relocation in the maps section of the ELF file. More...
typedef bool(* ubpf_bounds_check ) (void *context, uint64_t addr, uint64_t size)
struct ubpf_vm * ubpf_create (void)
@@ -136,6 +153,9 @@
int ubpf_register_external_dispatcher (struct ubpf_vm *vm, external_function_dispatcher_t dispatcher, external_function_validate_t validater)
Register a function that dispatches to external helpers The immediate field of a CALL instruction is an index of a helper function to invoke. This API sets a callback that will choose the helper function to invoke (based on the index) and then invoke it. This API also sets a callback that the validator will use to determine if a given index is a valid external function. More...
+int ubpf_register_stack_usage_calculator (struct ubpf_vm *vm, stack_usage_calculator_t calculator, void *cookie)
+ Register a function that will be called during eBPF program validation to determine stack usage for a local function. More...
+
int ubpf_load (struct ubpf_vm *vm, const void *code, uint32_t code_len, char **errmsg)
Load code into a VM. This must be done before calling ubpf_exec or ubpf_compile and after registering all functions. More...
@@ -145,15 +165,23 @@
int ubpf_exec (const struct ubpf_vm *vm, void *mem, size_t mem_len, uint64_t *bpf_return_value)
Execute a BPF program in the VM using the interpreter. More...
+int ubpf_exec_ex (const struct ubpf_vm *vm, void *mem, size_t mem_len, uint64_t *bpf_return_value, uint8_t *stack, size_t stack_len)
+
ubpf_jit_fn ubpf_compile (struct ubpf_vm *vm, char **errmsg)
Compile a BPF program in the VM to native code. More...
+ubpf_jit_ex_fn ubpf_compile_ex (struct ubpf_vm *vm, char **errmsg, enum JitMode jit_mode)
+ Compile a BPF program in the VM to native code. More...
+
ubpf_jit_fn ubpf_copy_jit (struct ubpf_vm *vm, void *buffer, size_t size, char **errmsg)
Copy the JIT'd program code to the given buffer. More...
int ubpf_translate (struct ubpf_vm *vm, uint8_t *buffer, size_t *size, char **errmsg)
Translate the eBPF byte code to machine code. More...
+int ubpf_translate_ex (struct ubpf_vm *vm, uint8_t *buffer, size_t *size, char **errmsg, enum JitMode jit_mode)
+ Translate the eBPF byte code to machine code. More...
+
int ubpf_set_unwind_function_index (struct ubpf_vm *vm, unsigned int idx)
Instruct the uBPF runtime to apply unwind-on-success semantics to a helper function. If the function returns 0, the uBPF runtime will end execution of the eBPF program and immediately return control to the caller. This is used for implementing function like the "bpf_tail_call" helper. More...
@@ -180,51 +208,65 @@
-
-
◆ UBPF_MAX_CALL_DEPTH
+
+
◆ UBPF_EBPF_NONVOLATILE_SIZE
- #define UBPF_MAX_CALL_DEPTH 10
+ #define UBPF_EBPF_NONVOLATILE_SIZE (sizeof(uint64_t) * 5)
-
Default maximum number of nested calls in the VM.
+
+
+
+
◆ UBPF_EBPF_STACK_SIZE
+
+
+
+
+
+ #define UBPF_EBPF_STACK_SIZE 512
+
+
+
+
+
Default stack size for the eBPF program. Must be divisible by 16.
-
-
◆ UBPF_MAX_INSTS
+
+
◆ UBPF_MAX_CALL_DEPTH
- #define UBPF_MAX_INSTS 65536
+ #define UBPF_MAX_CALL_DEPTH 10
-
Default maximum number of instructions that a program can contain.
+
Default maximum number of nested calls in the VM.
-
-
◆ UBPF_STACK_SIZE
+
+
◆ UBPF_MAX_INSTS
- #define UBPF_STACK_SIZE 512
+ #define UBPF_MAX_INSTS 65536
-
Default stack size for the VM. Must be divisible by 16.
+
Default maximum number of instructions that a program can contain.
@@ -275,6 +317,23 @@
+◆ stack_usage_calculator_t
+
+
+
+
+
+ typedef int(* stack_usage_calculator_t) (const struct ubpf_vm *vm, uint16_t pc, void *cookie)
+
+
+
+
+
The type of a stack usage calculator callback function.
+
See ubpf_register_stack_usage_calculator for additional information.
+
@@ -317,6 +376,22 @@
+
+