Skip to content

Commit d32cb05

Browse files
authored
Delete unused raw_context arg in host functions. (#183)
Signed-off-by: Takeshi Yoneda <[email protected]>
1 parent 5607523 commit d32cb05

File tree

9 files changed

+369
-389
lines changed

9 files changed

+369
-389
lines changed

include/proxy-wasm/exports.h

+83-96
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ namespace proxy_wasm {
2525

2626
class ContextBase;
2727

28+
// Any currently executing Wasm call context.
29+
::proxy_wasm::ContextBase *contextOrEffectiveContext();
30+
2831
extern thread_local ContextBase *current_context_;
2932

3033
namespace exports {
@@ -61,100 +64,87 @@ template <typename Pairs> void marshalPairs(const Pairs &result, char *buffer) {
6164

6265
// ABI functions exported from host to wasm.
6366

64-
Word get_configuration(void *raw_context, Word address, Word size);
65-
Word get_status(void *raw_context, Word status_code, Word address, Word size);
66-
Word log(void *raw_context, Word level, Word address, Word size);
67-
Word get_log_level(void *raw_context, Word result_level_uint32_ptr);
68-
Word get_property(void *raw_context, Word path_ptr, Word path_size, Word value_ptr_ptr,
69-
Word value_size_ptr);
70-
Word set_property(void *raw_context, Word key_ptr, Word key_size, Word value_ptr, Word value_size);
71-
Word continue_request(void *raw_context);
72-
Word continue_response(void *raw_context);
73-
Word continue_stream(void *raw_context, Word stream_type);
74-
Word close_stream(void *raw_context, Word stream_type);
75-
Word send_local_response(void *raw_context, Word response_code, Word response_code_details_ptr,
67+
Word get_configuration(Word address, Word size);
68+
Word get_status(Word status_code, Word address, Word size);
69+
Word log(Word level, Word address, Word size);
70+
Word get_log_level(Word result_level_uint32_ptr);
71+
Word get_property(Word path_ptr, Word path_size, Word value_ptr_ptr, Word value_size_ptr);
72+
Word set_property(Word key_ptr, Word key_size, Word value_ptr, Word value_size);
73+
Word continue_request();
74+
Word continue_response();
75+
Word continue_stream(Word stream_type);
76+
Word close_stream(Word stream_type);
77+
Word send_local_response(Word response_code, Word response_code_details_ptr,
7678
Word response_code_details_size, Word body_ptr, Word body_size,
7779
Word additional_response_header_pairs_ptr,
7880
Word additional_response_header_pairs_size, Word grpc_status);
79-
Word clear_route_cache(void *raw_context);
80-
Word get_shared_data(void *raw_context, Word key_ptr, Word key_size, Word value_ptr_ptr,
81-
Word value_size_ptr, Word cas_ptr);
82-
Word set_shared_data(void *raw_context, Word key_ptr, Word key_size, Word value_ptr,
83-
Word value_size, Word cas);
84-
Word register_shared_queue(void *raw_context, Word queue_name_ptr, Word queue_name_size,
85-
Word token_ptr);
86-
Word resolve_shared_queue(void *raw_context, Word vm_id_ptr, Word vm_id_size, Word queue_name_ptr,
81+
Word clear_route_cache();
82+
Word get_shared_data(Word key_ptr, Word key_size, Word value_ptr_ptr, Word value_size_ptr,
83+
Word cas_ptr);
84+
Word set_shared_data(Word key_ptr, Word key_size, Word value_ptr, Word value_size, Word cas);
85+
Word register_shared_queue(Word queue_name_ptr, Word queue_name_size, Word token_ptr);
86+
Word resolve_shared_queue(Word vm_id_ptr, Word vm_id_size, Word queue_name_ptr,
8787
Word queue_name_size, Word token_ptr);
88-
Word dequeue_shared_queue(void *raw_context, Word token, Word data_ptr_ptr, Word data_size_ptr);
89-
Word enqueue_shared_queue(void *raw_context, Word token, Word data_ptr, Word data_size);
90-
Word get_buffer_bytes(void *raw_context, Word type, Word start, Word length, Word ptr_ptr,
91-
Word size_ptr);
92-
Word get_buffer_status(void *raw_context, Word type, Word length_ptr, Word flags_ptr);
93-
Word set_buffer_bytes(void *raw_context, Word type, Word start, Word length, Word data_ptr,
94-
Word data_size);
95-
Word add_header_map_value(void *raw_context, Word type, Word key_ptr, Word key_size, Word value_ptr,
96-
Word value_size);
97-
Word get_header_map_value(void *raw_context, Word type, Word key_ptr, Word key_size,
98-
Word value_ptr_ptr, Word value_size_ptr);
99-
Word replace_header_map_value(void *raw_context, Word type, Word key_ptr, Word key_size,
100-
Word value_ptr, Word value_size);
101-
Word remove_header_map_value(void *raw_context, Word type, Word key_ptr, Word key_size);
102-
Word get_header_map_pairs(void *raw_context, Word type, Word ptr_ptr, Word size_ptr);
103-
Word set_header_map_pairs(void *raw_context, Word type, Word ptr, Word size);
104-
Word get_header_map_size(void *raw_context, Word type, Word result_ptr);
105-
Word getRequestBodyBufferBytes(void *raw_context, Word start, Word length, Word ptr_ptr,
106-
Word size_ptr);
107-
Word get_response_body_buffer_bytes(void *raw_context, Word start, Word length, Word ptr_ptr,
108-
Word size_ptr);
109-
Word http_call(void *raw_context, Word uri_ptr, Word uri_size, Word header_pairs_ptr,
110-
Word header_pairs_size, Word body_ptr, Word body_size, Word trailer_pairs_ptr,
111-
Word trailer_pairs_size, Word timeout_milliseconds, Word token_ptr);
112-
Word define_metric(void *raw_context, Word metric_type, Word name_ptr, Word name_size,
113-
Word result_ptr);
114-
Word increment_metric(void *raw_context, Word metric_id, int64_t offset);
115-
Word record_metric(void *raw_context, Word metric_id, uint64_t value);
116-
Word get_metric(void *raw_context, Word metric_id, Word result_uint64_ptr);
117-
Word grpc_call(void *raw_context, Word service_ptr, Word service_size, Word service_name_ptr,
118-
Word service_name_size, Word method_name_ptr, Word method_name_size,
119-
Word initial_metadata_ptr, Word initial_metadata_size, Word request_ptr,
120-
Word request_size, Word timeout_milliseconds, Word token_ptr);
121-
Word grpc_stream(void *raw_context, Word service_ptr, Word service_size, Word service_name_ptr,
122-
Word service_name_size, Word method_name_ptr, Word method_name_size,
123-
Word initial_metadata_ptr, Word initial_metadata_size, Word token_ptr);
124-
Word grpc_cancel(void *raw_context, Word token);
125-
Word grpc_close(void *raw_context, Word token);
126-
Word grpc_send(void *raw_context, Word token, Word message_ptr, Word message_size, Word end_stream);
127-
128-
Word set_tick_period_milliseconds(void *raw_context, Word tick_period_milliseconds);
129-
Word get_current_time_nanoseconds(void *raw_context, Word result_uint64_ptr);
130-
131-
Word set_effective_context(void *raw_context, Word context_id);
132-
Word done(void *raw_context);
133-
Word call_foreign_function(void *raw_context, Word function_name, Word function_name_size,
134-
Word arguments, Word warguments_size, Word results, Word results_size);
88+
Word dequeue_shared_queue(Word token, Word data_ptr_ptr, Word data_size_ptr);
89+
Word enqueue_shared_queue(Word token, Word data_ptr, Word data_size);
90+
Word get_buffer_bytes(Word type, Word start, Word length, Word ptr_ptr, Word size_ptr);
91+
Word get_buffer_status(Word type, Word length_ptr, Word flags_ptr);
92+
Word set_buffer_bytes(Word type, Word start, Word length, Word data_ptr, Word data_size);
93+
Word add_header_map_value(Word type, Word key_ptr, Word key_size, Word value_ptr, Word value_size);
94+
Word get_header_map_value(Word type, Word key_ptr, Word key_size, Word value_ptr_ptr,
95+
Word value_size_ptr);
96+
Word replace_header_map_value(Word type, Word key_ptr, Word key_size, Word value_ptr,
97+
Word value_size);
98+
Word remove_header_map_value(Word type, Word key_ptr, Word key_size);
99+
Word get_header_map_pairs(Word type, Word ptr_ptr, Word size_ptr);
100+
Word set_header_map_pairs(Word type, Word ptr, Word size);
101+
Word get_header_map_size(Word type, Word result_ptr);
102+
Word getRequestBodyBufferBytes(Word start, Word length, Word ptr_ptr, Word size_ptr);
103+
Word get_response_body_buffer_bytes(Word start, Word length, Word ptr_ptr, Word size_ptr);
104+
Word http_call(Word uri_ptr, Word uri_size, Word header_pairs_ptr, Word header_pairs_size,
105+
Word body_ptr, Word body_size, Word trailer_pairs_ptr, Word trailer_pairs_size,
106+
Word timeout_milliseconds, Word token_ptr);
107+
Word define_metric(Word metric_type, Word name_ptr, Word name_size, Word result_ptr);
108+
Word increment_metric(Word metric_id, int64_t offset);
109+
Word record_metric(Word metric_id, uint64_t value);
110+
Word get_metric(Word metric_id, Word result_uint64_ptr);
111+
Word grpc_call(Word service_ptr, Word service_size, Word service_name_ptr, Word service_name_size,
112+
Word method_name_ptr, Word method_name_size, Word initial_metadata_ptr,
113+
Word initial_metadata_size, Word request_ptr, Word request_size,
114+
Word timeout_milliseconds, Word token_ptr);
115+
Word grpc_stream(Word service_ptr, Word service_size, Word service_name_ptr, Word service_name_size,
116+
Word method_name_ptr, Word method_name_size, Word initial_metadata_ptr,
117+
Word initial_metadata_size, Word token_ptr);
118+
Word grpc_cancel(Word token);
119+
Word grpc_close(Word token);
120+
Word grpc_send(Word token, Word message_ptr, Word message_size, Word end_stream);
121+
122+
Word set_tick_period_milliseconds(Word tick_period_milliseconds);
123+
Word get_current_time_nanoseconds(Word result_uint64_ptr);
124+
125+
Word set_effective_context(Word context_id);
126+
Word done();
127+
Word call_foreign_function(Word function_name, Word function_name_size, Word arguments,
128+
Word warguments_size, Word results, Word results_size);
135129

136130
// Runtime environment functions exported from envoy to wasm.
137131

138-
Word wasi_unstable_fd_write(void *raw_context, Word fd, Word iovs, Word iovs_len,
139-
Word nwritten_ptr);
140-
Word wasi_unstable_fd_read(void *, Word, Word, Word, Word);
141-
Word wasi_unstable_fd_seek(void *, Word, int64_t, Word, Word);
142-
Word wasi_unstable_fd_close(void *, Word);
143-
Word wasi_unstable_fd_fdstat_get(void *, Word fd, Word statOut);
144-
Word wasi_unstable_environ_get(void *, Word, Word);
145-
Word wasi_unstable_environ_sizes_get(void *raw_context, Word count_ptr, Word buf_size_ptr);
146-
Word wasi_unstable_args_get(void *raw_context, Word argc_ptr, Word argv_buf_size_ptr);
147-
Word wasi_unstable_args_sizes_get(void *raw_context, Word argc_ptr, Word argv_buf_size_ptr);
148-
void wasi_unstable_proc_exit(void *, Word);
149-
Word wasi_unstable_clock_time_get(void *, Word, uint64_t, Word);
150-
Word wasi_unstable_random_get(void *, Word, Word);
151-
Word pthread_equal(void *, Word left, Word right);
132+
Word wasi_unstable_fd_write(Word fd, Word iovs, Word iovs_len, Word nwritten_ptr);
133+
Word wasi_unstable_fd_read(Word, Word, Word, Word);
134+
Word wasi_unstable_fd_seek(Word, int64_t, Word, Word);
135+
Word wasi_unstable_fd_close(Word);
136+
Word wasi_unstable_fd_fdstat_get(Word fd, Word statOut);
137+
Word wasi_unstable_environ_get(Word, Word);
138+
Word wasi_unstable_environ_sizes_get(Word count_ptr, Word buf_size_ptr);
139+
Word wasi_unstable_args_get(Word argc_ptr, Word argv_buf_size_ptr);
140+
Word wasi_unstable_args_sizes_get(Word argc_ptr, Word argv_buf_size_ptr);
141+
void wasi_unstable_proc_exit(Word);
142+
Word wasi_unstable_clock_time_get(Word, uint64_t, Word);
143+
Word wasi_unstable_random_get(Word, Word);
144+
Word pthread_equal(Word left, Word right);
152145

153146
// Support for embedders, not exported to Wasm.
154147

155-
// Any currently executing Wasm call context.
156-
::proxy_wasm::ContextBase *ContextOrEffectiveContext(::proxy_wasm::ContextBase *context);
157-
158148
#define FOR_ALL_HOST_FUNCTIONS(_f) \
159149
_f(log) _f(get_status) _f(set_property) _f(get_property) _f(send_local_response) \
160150
_f(get_shared_data) _f(set_shared_data) _f(register_shared_queue) _f(resolve_shared_queue) \
@@ -181,10 +171,9 @@ ::proxy_wasm::ContextBase *ContextOrEffectiveContext(::proxy_wasm::ContextBase *
181171
// Helpers to generate a stub to pass to VM, in place of a restricted proxy-wasm capability.
182172
#define _CREATE_PROXY_WASM_STUB(_fn) \
183173
template <typename F> struct _fn##Stub; \
184-
template <typename... Args> struct _fn##Stub<Word(void *, Args...)> { \
185-
static Word stub(void *raw_context, Args...) { \
186-
auto context = exports::ContextOrEffectiveContext( \
187-
static_cast<ContextBase *>((void)raw_context, current_context_)); \
174+
template <typename... Args> struct _fn##Stub<Word(Args...)> { \
175+
static Word stub(Args...) { \
176+
auto context = contextOrEffectiveContext(); \
188177
context->wasmVm()->integration()->error( \
189178
"Attempted call to restricted proxy-wasm capability: proxy_" #_fn); \
190179
return WasmResult::InternalFailure; \
@@ -197,19 +186,17 @@ FOR_ALL_HOST_FUNCTIONS_ABI_SPECIFIC(_CREATE_PROXY_WASM_STUB)
197186
// Helpers to generate a stub to pass to VM, in place of a restricted WASI capability.
198187
#define _CREATE_WASI_STUB(_fn) \
199188
template <typename F> struct _fn##Stub; \
200-
template <typename... Args> struct _fn##Stub<Word(void *, Args...)> { \
201-
static Word stub(void *raw_context, Args...) { \
202-
auto context = exports::ContextOrEffectiveContext( \
203-
static_cast<ContextBase *>((void)raw_context, current_context_)); \
189+
template <typename... Args> struct _fn##Stub<Word(Args...)> { \
190+
static Word stub(Args...) { \
191+
auto context = contextOrEffectiveContext(); \
204192
context->wasmVm()->integration()->error( \
205193
"Attempted call to restricted WASI capability: " #_fn); \
206194
return 76; /* __WASI_ENOTCAPABLE */ \
207195
} \
208196
}; \
209-
template <typename... Args> struct _fn##Stub<void(void *, Args...)> { \
210-
static void stub(void *raw_context, Args...) { \
211-
auto context = exports::ContextOrEffectiveContext( \
212-
static_cast<ContextBase *>((void)raw_context, current_context_)); \
197+
template <typename... Args> struct _fn##Stub<void(Args...)> { \
198+
static void stub(Args...) { \
199+
auto context = contextOrEffectiveContext(); \
213200
context->wasmVm()->integration()->error( \
214201
"Attempted call to restricted WASI capability: " #_fn); \
215202
} \

0 commit comments

Comments
 (0)