diff options
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src')
33 files changed, 0 insertions, 3819 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/LICENSE b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/LICENSE deleted file mode 100644 index 8f71f43f..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback.c deleted file mode 100644 index ccb9ec06..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback.c +++ /dev/null @@ -1,193 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -// Print a Wasm value -void wasm_val_print(wasm_val_t val) { - switch (val.kind) { - case WASM_I32: { - printf("%" PRIu32, val.of.i32); - } break; - case WASM_I64: { - printf("%" PRIu64, val.of.i64); - } break; - case WASM_F32: { - printf("%f", val.of.f32); - } break; - case WASM_F64: { - printf("%g", val.of.f64); - } break; - case WASM_ANYREF: - case WASM_FUNCREF: { - if (val.of.ref == NULL) { - printf("null"); - } else { - printf("ref(%p)", val.of.ref); - } - } break; - } -} - -// A function to be called from Wasm code. -own wasm_trap_t* print_callback( - const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - printf("Calling back...\n> "); - wasm_val_print(args->data[0]); - printf("\n"); - - wasm_val_copy(&results->data[0], &args->data[0]); - return NULL; -} - - -// A function closure. -own wasm_trap_t* closure_callback( - void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - int i = *(int*)env; - printf("Calling back closure...\n"); - printf("> %d\n", i); - - results->data[0].kind = WASM_I32; - results->data[0].of.i32 = (int32_t)i; - return NULL; -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("callback.aot", "rb"); -#else - FILE* file = fopen("callback.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Create external print functions. - printf("Creating callback...\n"); - own wasm_functype_t* print_type = wasm_functype_new_1_1(wasm_valtype_new_i32(), wasm_valtype_new_i32()); - own wasm_func_t* print_func = wasm_func_new(store, print_type, print_callback); - - int i = 42; - own wasm_functype_t* closure_type = wasm_functype_new_0_1(wasm_valtype_new_i32()); - own wasm_func_t* closure_func = wasm_func_new_with_env(store, closure_type, closure_callback, &i, NULL); - - wasm_functype_delete(print_type); - wasm_functype_delete(closure_type); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_t* externs[] = { - wasm_func_as_extern(print_func), wasm_func_as_extern(closure_func) - }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_func_delete(print_func); - wasm_func_delete(closure_func); - - // Extract export. - printf("Extracting export...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size == 0) { - printf("> Error accessing exports!\n"); - return 1; - } - const wasm_func_t* run_func = wasm_extern_as_func(exports.data[0]); - if (run_func == NULL) { - printf("> Error accessing export!\n"); - return 1; - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - - // Call. - printf("Calling export...\n"); - wasm_val_t as[2] = { WASM_I32_VAL(3), WASM_I32_VAL(4) }; - wasm_val_t rs[1] = { WASM_INIT_VAL }; - wasm_val_vec_t args = WASM_ARRAY_VEC(as); - wasm_val_vec_t results = WASM_ARRAY_VEC(rs); - wasm_trap_t *trap = wasm_func_call(run_func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - return 1; - } - - wasm_extern_vec_delete(&exports); - - // Print result. - printf("Printing result...\n"); - printf("> %u\n", rs[0].of.i32); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback.wat deleted file mode 100644 index d86195f5..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback.wat +++ /dev/null @@ -1,10 +0,0 @@ -(module - (func $print (import "" "print") (param i32) (result i32)) - (func $closure (import "" "closure") (result i32)) - (func (export "run") (param $x i32) (param $y i32) (result i32) - (i32.add - (call $print (i32.add (local.get $x) (local.get $y))) - (call $closure) - ) - ) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback_chain.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback_chain.c deleted file mode 100644 index e4f5801d..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback_chain.c +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -static const byte_t * -get_memory_data(uint32_t offset, uint32_t length); - -static bool -call_wasm_function(uint32_t export_id, const wasm_val_vec_t *args, - wasm_val_vec_t *results, const char *name); - -/************************ IMPORTED FUNCTIONS **************************/ - -// (nil) -> i32 -#define FUNCTION_TYPE_NIL_I32 wasm_functype_new_0_1(wasm_valtype_new_i32()) -// (i32, i32) -> nil -#define FUNCTION_TYPE_I32X2_NIL \ - wasm_functype_new_2_0(wasm_valtype_new_i32(), wasm_valtype_new_i32()) - -/* IMPORT FUNCTION LIST */ -#define IMPORT_FUNCTION_LIST(V) \ - V(get_pairs, 0, FUNCTION_TYPE_NIL_I32) \ - V(log, 1, FUNCTION_TYPE_I32X2_NIL) - -/* EXPORT FUNCTION LIST */ -#define EXPORT_FUNCTION_LIST(V) \ - V(on_start) \ - V(on_stop) \ - V(malloc) \ - V(free) - -enum EXPORT_ITEM_NAME { -#define DEFINE_ENUM(name) e_##name, - EXPORT_FUNCTION_LIST(DEFINE_ENUM) -#undef DEFINE_ENUM - e_MEMORY, -}; - -#define DEFINE_FUNCTION(name) \ - wasm_trap_t *STUB_##name(const wasm_val_vec_t *args, \ - wasm_val_vec_t *results) - -#define DEFINE_EMPTY_FUNCTION(name) \ - DEFINE_FUNCTION(name) \ - { \ - printf("[WASM -> NATIVE] calling back %s\n", __FUNCTION__); \ - return NULL; \ - } -#undef DEFINE_EMPTY_FUNCTION - -DEFINE_FUNCTION(get_pairs) -{ - wasm_val_vec_t as = { 0 }; - wasm_val_t data[1] = { WASM_I32_VAL(10) }; - wasm_val_vec_new(&as, 1, data); - if (as.data == NULL) { - printf("ERROR: create parameters failed\n"); - return NULL; - } - - call_wasm_function(e_malloc, &as, results, "malloc"); - - wasm_val_vec_delete(&as); - return NULL; -} - -DEFINE_FUNCTION(log) -{ - wasm_val_t offset = args->data[0]; - wasm_val_t length = args->data[1]; - const byte_t *data = NULL; - - printf("[WASM -> NATIVE] calling back %s\n", __FUNCTION__); - - if (offset.kind != WASM_I32 || length.kind != WASM_I32) { - printf("> Error value type!\n"); - } - - if (!(data = get_memory_data(offset.of.i32, length.of.i32))) { - return NULL; - } - - if (data[length.of.i32 - 1]) { - printf("> Error terminated character\n"); - return NULL; - } - - printf("[WASM_LOG] %s\n", data); - return NULL; -} - -/**********************************************************************/ -// all exportted wasm functions. check with "/opt/wabt/bin/wasm-objdump -x -j -// Export X.wasm" -1: memory 0-32: functions -static own wasm_extern_vec_t exports = { 0 }; - -static const byte_t * -get_memory_data(uint32_t offset, uint32_t length) -{ - wasm_memory_t *memory; - - if (!(memory = wasm_extern_as_memory(exports.data[e_MEMORY]))) { - return NULL; - } - - byte_t *base = wasm_memory_data(memory); - size_t size = wasm_memory_data_size(memory); - if (!base || offset + length > size) { - return NULL; - } - - printf("[NATIVE -> WASM] accessing the memory...\n"); - - return base + offset; -} - -static bool -call_wasm_function(uint32_t export_id, const wasm_val_vec_t *args, - wasm_val_vec_t *results, const char *name) -{ - const wasm_func_t *function; - wasm_trap_t *trap; - - printf("[NATIVE -> WASM] calling func %s...\n", name); - - if (!(function = wasm_extern_as_func(exports.data[export_id]))) { - printf("> Error get export function %u\n", export_id); - return false; - } - - if ((trap = wasm_func_call(function, args, results))) { - own wasm_message_t message = { 0 }; - wasm_trap_message(trap, &message); - - if (message.data) { - printf("> Error calling function %s\n", message.data); - } - else { - printf("> Error calling function"); - } - - wasm_name_delete(&message); - wasm_trap_delete(trap); - return false; - } - return true; -} - -int -main(int argc, const char *argv[]) -{ - // Initialize. - printf("Initializing...\n"); - wasm_engine_t *engine = wasm_engine_new(); - wasm_store_t *store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE *file = fopen("callback_chain.aot", "rb"); -#else - FILE *file = fopen("callback_chain.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t *module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Instantiate. - printf("Instantiating module...\n"); - - // Create external functions. - printf("Creating callback...\n"); -#define IMPORT_FUNCTION_VARIABLE_NAME(name, ...) \ - own wasm_func_t *function_##name = NULL; - IMPORT_FUNCTION_LIST(IMPORT_FUNCTION_VARIABLE_NAME) -#undef IMPORT_FUNCTION_VARIABLE_NAME - -#define CREATE_WASM_FUNCTION(name, index, CREATE_FUNC_TYPE) \ - { \ - own wasm_functype_t *type = CREATE_FUNC_TYPE; \ - if (!(function_##name = wasm_func_new(store, type, STUB_##name))) { \ - printf("> Error creating new function\n"); \ - return 1; \ - } \ - wasm_functype_delete(type); \ - } - IMPORT_FUNCTION_LIST(CREATE_WASM_FUNCTION) -#undef CREATE_WASM_FUNCTION - - wasm_extern_t *fs[2] = { 0 }; -#define ADD_TO_FUNCTION_LIST(name, index, ...) \ - fs[index] = wasm_func_as_extern(function_##name); - IMPORT_FUNCTION_LIST(ADD_TO_FUNCTION_LIST) -#undef ADD_TO_FUNCTION_LIST - - wasm_extern_vec_t imports = WASM_ARRAY_VEC(fs); - own wasm_instance_t *instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - -#define DESTROY_WASM_FUNCITON(name, index, ...) \ - wasm_func_delete(function_##name); - IMPORT_FUNCTION_LIST(DESTROY_WASM_FUNCITON) -#undef DESTROY_WASM_FUNCITON - - // Extract export. - printf("Extracting export...\n"); - wasm_instance_exports(instance, &exports); - if (!exports.size) { - printf("> Error accessing exports!\n"); - return 1; - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - - // Call. - printf("Calling export...\n"); - - if (!call_wasm_function(e_on_start, NULL, NULL, "on_start")) { - printf("> Error calling on_start\n"); - return 1; - } - - if (!call_wasm_function(e_on_stop, NULL, NULL, "on_stop")) { - printf("> Error calling on_stop\n"); - return 1; - } - - wasm_extern_vec_delete(&exports); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback_chain.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback_chain.wat deleted file mode 100644 index 80bbf4f7..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/callback_chain.wat +++ /dev/null @@ -1,32 +0,0 @@ -;; Copyright (C) 2019 Intel Corporation. All rights reserved. -;; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -(module - (func $get_pairs (import "" "get_pairs") (result i32)) - (func $log (import "" "log") (param i32 i32)) - - (func $on_start (export "on_start") - (call $log (i32.const 0) (i32.const 9)) - (call $get_pairs) - (drop) - ) - - (func $on_stop (export "on_stop") - (call $log (i32.const 9) (i32.const 8)) - ) - - (func $malloc (export "malloc") (param i32) (result i32) - (call $log (i32.const 17) (i32.const 7)) - (i32.const 64) - ) - - (func $free(export "free") (param i32) - (call $log (i32.const 24) (i32.const 5)) - ) - - (memory (export "memory") 1) - (data (i32.const 0) "on_start") - (data (i32.const 9) "on_stop") - (data (i32.const 17) "malloc") - (data (i32.const 24) "free") -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/clone.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/clone.c deleted file mode 100644 index da83b379..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/clone.c +++ /dev/null @@ -1,535 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -#include <pthread.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include "wasm_c_api.h" - -#define WORKER_NUMBER 10 - -/******************************* VM *******************************/ -/* Use wasm_vm_t and vm_xxx to simulate a minimal Wasm VM in Envoy */ - -typedef struct _vm { - wasm_engine_t *engine; - wasm_store_t *store; - wasm_module_t *module; - wasm_shared_module_t *shared_module; - wasm_instance_t *instance; - wasm_func_t **function_list; - wasm_memory_t *memory; - wasm_table_t *table; - wasm_extern_vec_t *exports; -} wasm_vm_t; - -typedef enum _clone_level { - not_cloneable = 0, - compiled_bytecode, - instantiated_module -} clone_level; - -typedef struct _thread_arg_t { - char name[32]; - bool *ready_go_flag; - pthread_mutex_t *ready_go_lock; - pthread_cond_t *ready_go_cond; - const wasm_vm_t *base_vm; -} thread_arg_t; - -wasm_vm_t * -vm_new() -{ - wasm_vm_t *vm = NULL; - - vm = malloc(sizeof(struct _vm)); - if (!vm) - goto fail; - - memset(vm, 0, sizeof(wasm_vm_t)); - - vm->engine = wasm_engine_new(); - if (!vm->engine) - goto fail; - - vm->store = wasm_store_new(vm->engine); - if (!vm->store) - goto fail; - - return vm; - -fail: - if (vm) { - if (vm->engine) - wasm_engine_delete(vm->engine); - - free(vm); - } - return NULL; -} - -wasm_vm_t * -vm_release(wasm_vm_t *vm) -{ - if (!vm) - return NULL; - - if (vm->function_list) { - free(vm->function_list); - vm->function_list = NULL; - } - - vm->memory = NULL; - - if (vm->exports) { - wasm_extern_vec_delete(vm->exports); - free(vm->exports); - vm->exports = NULL; - } - - wasm_instance_delete(vm->instance); - vm->instance = NULL; - - wasm_shared_module_delete(vm->shared_module); - vm->shared_module = NULL; - - wasm_module_delete(vm->module); - vm->module = NULL; - - wasm_store_delete(vm->store); - vm->store = NULL; - - wasm_engine_delete(vm->engine); - vm->engine = NULL; - - free(vm); - return NULL; -} - -bool -vm_load(wasm_vm_t *vm, const wasm_byte_vec_t *binary) -{ - vm->module = wasm_module_new(vm->store, binary); - vm->shared_module = wasm_module_share(vm->module); - return vm->module != NULL; -} - -bool -vm_link(wasm_vm_t *vm, wasm_extern_vec_t *imports) -{ - vm->instance = wasm_instance_new(vm->store, vm->module, imports, NULL); - if (!vm->instance) - goto fail; - - vm->exports = malloc(sizeof(wasm_extern_vec_t)); - if (!vm->exports) - goto fail; - - memset(vm->exports, 0, sizeof(wasm_extern_vec_t)); - wasm_instance_exports(vm->instance, vm->exports); - /* an exported memory, and two exported functions */ - assert(vm->exports->size == 3); - - /* bind memory */ - assert(wasm_extern_kind(vm->exports->data[0]) == WASM_EXTERN_MEMORY); - vm->memory = wasm_extern_as_memory(vm->exports->data[0]); - - vm->function_list = malloc(2 * sizeof(wasm_func_t *)); - if (!vm->function_list) - goto fail; - - memset(vm->function_list, 0, 2 * sizeof(wasm_func_t *)); - - /* bind wasm_set_byte(...) */ - assert(wasm_extern_kind(vm->exports->data[1]) == WASM_EXTERN_FUNC); - vm->function_list[0] = wasm_extern_as_func(vm->exports->data[1]); - - /* bind wasm_get_byte(...) */ - assert(wasm_extern_kind(vm->exports->data[2]) == WASM_EXTERN_FUNC); - vm->function_list[1] = wasm_extern_as_func(vm->exports->data[2]); - - return true; -fail: - return false; -} - -wasm_vm_t * -vm_clone_from_module(const wasm_vm_t *base) -{ - printf("Initializing...\n"); - wasm_vm_t *secondary = NULL; - - secondary = vm_new(); - if (secondary) { - printf("Reuse module and bypass vm_load()..."); - secondary->module = - wasm_module_obtain(base->store, base->shared_module); - if (!secondary->module) - secondary = vm_release(secondary); - } - - return secondary; -} - -wasm_vm_t * -vm_clone_from_instance(const wasm_vm_t *base) -{ - /** - * if do a clone of the level instantiated_module, need to malloc and - * initialie - * - global. WASMGlobalIntance and global data - * - memory. WAAMMemoryInstance, memory_data and heap - * - table. WASMTableInstance, table_data - * - exports. all global, memory and table - * - * it is almost everything in wasm_instantiate() except funciton. - */ - (void)base; - printf("Unsupported\n"); - return NULL; -} - -wasm_vm_t * -vm_clone(const wasm_vm_t *base, clone_level level) -{ - if (level == not_cloneable) - return NULL; - - if (level == compiled_bytecode) - return vm_clone_from_module(base); - else - return vm_clone_from_instance(base); -} - -bool -vm_memory_set_byte(const wasm_vm_t *vm, uint32_t offset, uint8_t byte) -{ - byte_t *data = wasm_memory_data(vm->memory); - assert(data); - *(data + offset) = byte; - return true; -} - -bool -vm_memory_get_byte(const wasm_vm_t *vm, uint32_t offset, uint8_t *byte) -{ - byte_t *data = wasm_memory_data(vm->memory); - assert(data); - *byte = *(data + offset); - return true; -} - -bool -vm_function_set_byte(const wasm_vm_t *vm, uint32_t offset, uint8_t byte) -{ - wasm_val_t a_v[2] = { WASM_I32_VAL(offset), WASM_I32_VAL(byte) }; - wasm_val_vec_t args = WASM_ARRAY_VEC(a_v); - wasm_val_vec_t results = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(vm->function_list[0], &args, &results); - if (trap) { - printf("call wasm_set_byte failed"); - wasm_trap_delete(trap); - return false; - } - - return true; -} - -bool -vm_function_get_byte(const wasm_vm_t *vm, uint32_t offset, uint8_t *byte) -{ - wasm_val_t a_v[1] = { WASM_I32_VAL(offset) }; - wasm_val_vec_t args = WASM_ARRAY_VEC(a_v); - wasm_val_t r_v[1] = { WASM_INIT_VAL }; - wasm_val_vec_t results = WASM_ARRAY_VEC(r_v); - wasm_trap_t *trap = wasm_func_call(vm->function_list[1], &args, &results); - if (trap) { - printf("call wasm_get_byte failed"); - wasm_trap_delete(trap); - return false; - } - - assert(results.data->kind == WASM_I32); - *byte = results.data->of.i32; - return true; -} - -static bool -load_wasm_file_content(const char *file_name, wasm_byte_vec_t *out) -{ - bool ret = false; -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE *file = fopen(file_name, "rb"); -#else - FILE *file = fopen(file_name, "rb"); -#endif - if (!file) { - printf("> Error loading .wasm!\n"); - goto quit; - } - - int offset = fseek(file, 0L, SEEK_END); - if (offset == -1) { - printf("> Error loading .wasm!\n"); - goto close_file; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading .wasm!\n"); - goto close_file; - } - - offset = fseek(file, 0L, SEEK_SET); - if (offset == -1) { - printf("> Error loading .wasm!\n"); - goto close_file; - } - - wasm_byte_vec_new_uninitialized(out, file_size); - if (fread(out->data, file_size, 1, file) != 1) { - printf("> Error loading content!\n"); - goto close_file; - } - - ret = true; -close_file: - fclose(file); -quit: - return ret; -} - -static pthread_key_t name_key; - -wasm_trap_t * -report_cb(const wasm_val_vec_t *args, wasm_val_vec_t *results) -{ - (void)results; - - assert(args->data[0].kind == WASM_I32); - uint32_t chk_pnt_no = args->data[0].of.i32; - - char *name = pthread_getspecific(name_key); - printf("[%s] Pass CHK POINT #%u\n", name, chk_pnt_no); - - return NULL; -} - -bool -run_code_start(wasm_vm_t **out) -{ - bool ret = false; - - printf("Initializing...\n"); - wasm_vm_t *vm = vm_new(); - if (!vm) - goto fail; - - printf("Loading binary...\n"); - wasm_byte_vec_t binary = { 0 }; -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - const char *file_name = "clone.aot"; -#else - const char *file_name = "clone.wasm"; -#endif - if (!load_wasm_file_content(file_name, &binary)) - goto release_vm; - - printf("Compiling module...\n"); - ret = vm_load(vm, &binary); - wasm_byte_vec_delete(&binary); - if (!ret) - goto release_vm; - - printf("Creating callback...\n"); - wasm_functype_t *callback_type = - wasm_functype_new_1_0(wasm_valtype_new_i32()); - if (!callback_type) - goto release_vm; - - wasm_func_t *callback = wasm_func_new(vm->store, callback_type, report_cb); - wasm_functype_delete(callback_type); - if (!callback) - goto release_vm; - - printf("Instantiating module...\n"); - wasm_extern_t *externs[] = { wasm_func_as_extern(callback) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - ret = vm_link(vm, &imports); - wasm_func_delete(callback); - if (!ret) - goto release_vm; - - *out = vm; - return true; - -release_vm: - vm_release(vm); -fail: - return false; -} - -bool -run_warm_start_w_compiled_bytecode(const wasm_vm_t *first, wasm_vm_t **out) -{ - bool ret; - wasm_vm_t *secondary = vm_clone(first, compiled_bytecode); - if (!secondary) - goto fail; - - printf("Creating callback...\n"); - wasm_functype_t *callback_type = - wasm_functype_new_1_0(wasm_valtype_new_i32()); - if (!callback_type) - goto release_vm; - - wasm_func_t *callback = - wasm_func_new(secondary->store, callback_type, report_cb); - wasm_functype_delete(callback_type); - if (!callback) - goto release_vm; - - printf("Instantiating module...\n"); - wasm_extern_t *externs[] = { wasm_func_as_extern(callback) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - ret = vm_link(secondary, &imports); - wasm_func_delete(callback); - if (!ret) - goto release_vm; - - *out = secondary; - return true; - -release_vm: - vm_release(secondary); -fail: - return false; -} - -bool -run_warm_start_w_instantiated_module(const wasm_vm_t *first, wasm_vm_t **out) -{ - wasm_vm_t *secondary = vm_clone(first, instantiated_module); - if (!secondary) - return false; - - *out = secondary; - return true; -} - -void -run_test(const wasm_vm_t *vm) -{ - uint8_t byte = 0xFF; - - /* read initialization */ - vm_function_get_byte(vm, 10, &byte); - assert(byte == 0x0); - vm_memory_get_byte(vm, 10, &byte); - assert(byte == 0x0); - - /* read after writing */ - vm_function_set_byte(vm, 16, 0xab); - vm_function_get_byte(vm, 16, &byte); - assert(byte == 0xab); - - vm_memory_set_byte(vm, 16, 0xcd); - vm_memory_get_byte(vm, 16, &byte); - assert(byte == 0xcd); - - /* reading and writing across */ - vm_function_set_byte(vm, 16, 0xef); - vm_memory_get_byte(vm, 16, &byte); - assert(byte == 0xef); - - vm_memory_set_byte(vm, 16, 0x67); - vm_function_get_byte(vm, 16, &byte); - assert(byte == 0x67); - - printf("All Passed ...\n"); -} - -static void * -thrd_func(void *arg) -{ - thread_arg_t *thrd_arg = (thread_arg_t *)arg; - - sleep(rand() % 5); - printf("Running warm start at %s...\n", thrd_arg->name); - - pthread_setspecific(name_key, thrd_arg->name); - - wasm_vm_t *vm; - if (!run_warm_start_w_compiled_bytecode(thrd_arg->base_vm, &vm)) - return NULL; - - pthread_mutex_trylock(thrd_arg->ready_go_lock); - while (!(*thrd_arg->ready_go_flag)) { - pthread_cond_wait(thrd_arg->ready_go_cond, thrd_arg->ready_go_lock); - } - pthread_mutex_unlock(thrd_arg->ready_go_lock); - - printf("Running test at %s...\n", thrd_arg->name); - run_test(vm); - - vm_release(vm); - pthread_exit(NULL); - return NULL; -} - -int -main() -{ - int ret = EXIT_FAILURE; - bool ready_go_flag = false; - pthread_mutex_t ready_go_lock = PTHREAD_MUTEX_INITIALIZER; - pthread_cond_t ready_go_cond = PTHREAD_COND_INITIALIZER; - pthread_key_create(&name_key, NULL); - pthread_setspecific(name_key, "Execution Thread"); - - printf("Running cold start at the execution thread...\n"); - wasm_vm_t *base_vm; - if (!run_code_start(&base_vm)) - goto quit; - run_test(base_vm); - - printf("Running warm start at other threads...\n"); - - pthread_t tids[WORKER_NUMBER] = { 0 }; - thread_arg_t thrd_args[WORKER_NUMBER] = { 0 }; - for (size_t i = 0; i < sizeof(tids) / sizeof(tids[0]); i++) { - thread_arg_t *thrd_arg = thrd_args + i; - - snprintf(thrd_arg->name, 32, "Worker#%lu", i); - thrd_arg->ready_go_cond = &ready_go_cond; - thrd_arg->ready_go_lock = &ready_go_lock; - thrd_arg->ready_go_flag = &ready_go_flag; - thrd_arg->base_vm = base_vm; - - int ret = pthread_create(&tids[i], NULL, thrd_func, thrd_arg); - if (ret != 0) - break; - } - - sleep(1); - pthread_mutex_trylock(&ready_go_lock); - ready_go_flag = true; - pthread_mutex_unlock(&ready_go_lock); - pthread_cond_broadcast(&ready_go_cond); - - sleep(3); - for (size_t i = 0; i < sizeof(tids) / sizeof(tids[0]); i++) { - if (tids[i] != 0) - pthread_join(tids[i], NULL); - } - - vm_release(base_vm); - ret = EXIT_SUCCESS; -quit: - return ret; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/clone.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/clone.wat deleted file mode 100644 index e9934cc0..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/clone.wat +++ /dev/null @@ -1,15 +0,0 @@ -(module - (func $report (import "" "report") (param i32)) - - (memory (export "mem") 1 1) - - (func $wasm_set_byte (export "set_byte") (param i32 i32) - (call $report (i32.const 1)) - (i32.store8 (local.get 0) (local.get 1)) - ) - - (func $wasm_get_byte (export "get_byte") (param i32) (result i32) - (call $report (i32.const 2)) - (i32.load(local.get 0)) - ) -)
\ No newline at end of file diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/empty_imports.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/empty_imports.c deleted file mode 100644 index c8788b51..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/empty_imports.c +++ /dev/null @@ -1,122 +0,0 @@ -#include <stdio.h> - -#include "wasm_c_api.h" - -#define own - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("empty_imports.aot", "rb"); -#else - FILE* file = fopen("empty_imports.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Instantiate with non-null but empty imports array. - printf("Instantiating module...\n"); - wasm_extern_vec_t imports = WASM_EMPTY_VEC; - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - // Run an exported function to verify that the instance was created correctly. - printf("Extracting export...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size == 0) { - printf("> Error accessing exports!\n"); - return 1; - } - - const wasm_func_t* add_func = wasm_extern_as_func(exports.data[0]); - if (add_func == NULL) { - printf("> Error accessing export!\n"); - return 1; - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - - printf("Calling export...\n"); - wasm_val_t args[2] = { WASM_I32_VAL(3), WASM_I32_VAL(4) }; - wasm_val_vec_t args_vec = WASM_ARRAY_VEC(args); - - wasm_val_t results[1] = { WASM_INIT_VAL }; - wasm_val_vec_t results_vec = WASM_ARRAY_VEC(results); - - wasm_trap_t *trap = wasm_func_call(add_func, &args_vec, &results_vec); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - return 1; - } - - if (results_vec.data[0].of.i32 != 7) { - printf("> Error calling function!\n"); - return 1; - } - - wasm_extern_vec_delete(&exports); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/empty_imports.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/empty_imports.wat deleted file mode 100644 index 38639790..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/empty_imports.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (func (export "add") (param i32 i32) (result i32) - (i32.add (local.get 0) (local.get 1)) - ) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/global.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/global.c deleted file mode 100644 index 91c8cb65..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/global.c +++ /dev/null @@ -1,278 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -wasm_global_t* get_export_global(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_global(exports->data[i])) { - printf("> Error accessing global export %zu!\n", i); - exit(1); - } - return wasm_extern_as_global(exports->data[i]); -} - -wasm_func_t* get_export_func(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_func(exports->data[i])) { - printf("> Error accessing function export %zu!\n", i); - exit(1); - } - return wasm_extern_as_func(exports->data[i]); -} - - -#define check(val, type, expected) \ - if (val.of.type != expected) { \ - printf("> Error reading value\n"); \ - exit(1); \ - } - -#define check_global(global, type, expected) \ - { \ - wasm_val_t val; \ - wasm_global_get(global, &val); \ - check(val, type, expected); \ - } - -#define check_trap(trap) \ - if (trap) { \ - printf("> Error calling function\n"); \ - wasm_trap_delete(trap); \ - exit(1); \ - } - -#define check_call(func, type, expected) \ - { \ - wasm_val_t vs[1]; \ - wasm_val_vec_t args = WASM_EMPTY_VEC; \ - wasm_val_vec_t results = WASM_ARRAY_VEC(vs); \ - wasm_trap_t *trap = wasm_func_call(func, &args, &results); \ - check_trap(trap); \ - check(vs[0], type, expected); \ - } - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("global.aot", "rb"); -#else - FILE* file = fopen("global.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Create external globals. - printf("Creating globals...\n"); - own wasm_globaltype_t* const_f32_type = wasm_globaltype_new( - wasm_valtype_new(WASM_F32), WASM_CONST); - own wasm_globaltype_t* const_i64_type = wasm_globaltype_new( - wasm_valtype_new(WASM_I64), WASM_CONST); - own wasm_globaltype_t* var_f32_type = wasm_globaltype_new( - wasm_valtype_new(WASM_F32), WASM_VAR); - own wasm_globaltype_t* var_i64_type = wasm_globaltype_new( - wasm_valtype_new(WASM_I64), WASM_VAR); - - wasm_val_t val_f32_1 = WASM_F32_VAL(1); - own wasm_global_t* const_f32_import = - wasm_global_new(store, const_f32_type, &val_f32_1); - wasm_val_t val_i64_2 = WASM_I64_VAL(2); - own wasm_global_t* const_i64_import = - wasm_global_new(store, const_i64_type, &val_i64_2); - wasm_val_t val_f32_3 = WASM_F32_VAL(3); - own wasm_global_t* var_f32_import = - wasm_global_new(store, var_f32_type, &val_f32_3); - wasm_val_t val_i64_4 = WASM_I64_VAL(4); - own wasm_global_t* var_i64_import = - wasm_global_new(store, var_i64_type, &val_i64_4); - - wasm_globaltype_delete(const_f32_type); - wasm_globaltype_delete(const_i64_type); - wasm_globaltype_delete(var_f32_type); - wasm_globaltype_delete(var_i64_type); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_t* externs[] = { - wasm_global_as_extern(const_f32_import), - wasm_global_as_extern(const_i64_import), - wasm_global_as_extern(var_f32_import), - wasm_global_as_extern(var_i64_import) - }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_module_delete(module); - - // Extract export. - printf("Extracting exports...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - size_t i = 0; - wasm_global_t* const_f32_export = get_export_global(&exports, i++); - wasm_global_t* const_i64_export = get_export_global(&exports, i++); - wasm_global_t* var_f32_export = get_export_global(&exports, i++); - wasm_global_t* var_i64_export = get_export_global(&exports, i++); - wasm_func_t* get_const_f32_import = get_export_func(&exports, i++); - wasm_func_t* get_const_i64_import = get_export_func(&exports, i++); - wasm_func_t* get_var_f32_import = get_export_func(&exports, i++); - wasm_func_t* get_var_i64_import = get_export_func(&exports, i++); - wasm_func_t* get_const_f32_export = get_export_func(&exports, i++); - wasm_func_t* get_const_i64_export = get_export_func(&exports, i++); - wasm_func_t* get_var_f32_export = get_export_func(&exports, i++); - wasm_func_t* get_var_i64_export = get_export_func(&exports, i++); - wasm_func_t* set_var_f32_import = get_export_func(&exports, i++); - wasm_func_t* set_var_i64_import = get_export_func(&exports, i++); - wasm_func_t* set_var_f32_export = get_export_func(&exports, i++); - wasm_func_t* set_var_i64_export = get_export_func(&exports, i++); - - // Try cloning. - own wasm_global_t* copy = wasm_global_copy(var_f32_import); - assert(wasm_global_same(var_f32_import, copy)); - wasm_global_delete(copy); - - // Interact. - printf("Accessing globals...\n"); - - // Check initial values. - check_global(const_f32_import, f32, 1); - check_global(const_i64_import, i64, 2); - check_global(var_f32_import, f32, 3); - check_global(var_i64_import, i64, 4); - check_global(const_f32_export, f32, 5); - check_global(const_i64_export, i64, 6); - check_global(var_f32_export, f32, 7); - check_global(var_i64_export, i64, 8); - - check_call(get_const_f32_import, f32, 1); - check_call(get_const_i64_import, i64, 2); - check_call(get_var_f32_import, f32, 3); - check_call(get_var_i64_import, i64, 4); - check_call(get_const_f32_export, f32, 5); - check_call(get_const_i64_export, i64, 6); - check_call(get_var_f32_export, f32, 7); - check_call(get_var_i64_export, i64, 8); - - // Modify variables through API and check again. - wasm_val_t val33 = WASM_F32_VAL(33); - wasm_global_set(var_f32_import, &val33); - wasm_val_t val34 = WASM_I64_VAL(34); - wasm_global_set(var_i64_import, &val34); - wasm_val_t val37 = WASM_F32_VAL(37); - wasm_global_set(var_f32_export, &val37); - wasm_val_t val38 = WASM_I64_VAL(38); - wasm_global_set(var_i64_export, &val38); - - check_global(var_f32_import, f32, 33); - check_global(var_i64_import, i64, 34); - check_global(var_f32_export, f32, 37); - check_global(var_i64_export, i64, 38); - - check_call(get_var_f32_import, f32, 33); - check_call(get_var_i64_import, i64, 34); - check_call(get_var_f32_export, f32, 37); - check_call(get_var_i64_export, i64, 38); - - // Modify variables through calls and check again. - wasm_val_vec_t res = WASM_EMPTY_VEC; - wasm_val_t vs73[] = { WASM_F32_VAL(73) }; - wasm_val_vec_t args73 = WASM_ARRAY_VEC(vs73); - wasm_trap_t *trap = wasm_func_call(set_var_f32_import, &args73, &res); - check_trap(trap); - - wasm_val_t vs74[] = { WASM_I64_VAL(74) }; - wasm_val_vec_t args74 = WASM_ARRAY_VEC(vs74); - trap = wasm_func_call(set_var_i64_import, &args74, &res); - check_trap(trap); - - wasm_val_t vs77[] = { WASM_F32_VAL(77) }; - wasm_val_vec_t args77 = WASM_ARRAY_VEC(vs77); - trap = wasm_func_call(set_var_f32_export, &args77, &res); - check_trap(trap); - - wasm_val_t vs78[] = { WASM_I64_VAL(78) }; - wasm_val_vec_t args78 = WASM_ARRAY_VEC(vs78); - trap = wasm_func_call(set_var_i64_export, &args78, &res); - check_trap(trap); - - check_global(var_f32_import, f32, 73); - check_global(var_i64_import, i64, 74); - check_global(var_f32_export, f32, 77); - check_global(var_i64_export, i64, 78); - - check_call(get_var_f32_import, f32, 73); - check_call(get_var_i64_import, i64, 74); - check_call(get_var_f32_export, f32, 77); - check_call(get_var_i64_export, i64, 78); - - wasm_global_delete(const_f32_import); - wasm_global_delete(const_i64_import); - wasm_global_delete(var_f32_import); - wasm_global_delete(var_i64_import); - wasm_extern_vec_delete(&exports); - wasm_instance_delete(instance); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/global.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/global.wat deleted file mode 100644 index dea08577..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/global.wat +++ /dev/null @@ -1,27 +0,0 @@ -(module - (global $f32_import (import "" "const f32") f32) - (global $i64_import (import "" "const i64") i64) - (global $mut_f32_import (import "" "var f32") (mut f32)) - (global $mut_i64_import (import "" "var i64") (mut i64)) - - (global $f32_export (export "const f32") f32 (f32.const 5)) - (global $i64_export (export "const i64") i64 (i64.const 6)) - (global $mut_f32_export (export "var f32") (mut f32) (f32.const 7)) - (global $mut_i64_export (export "var i64") (mut i64) (i64.const 8)) - - (func (export "get const f32 import") (result f32) (global.get $f32_import)) - (func (export "get const i64 import") (result i64) (global.get $i64_import)) - (func (export "get var f32 import") (result f32) (global.get $mut_f32_import)) - (func (export "get var i64 import") (result i64) (global.get $mut_i64_import)) - - (func (export "get const f32 export") (result f32) (global.get $f32_export)) - (func (export "get const i64 export") (result i64) (global.get $i64_export)) - (func (export "get var f32 export") (result f32) (global.get $mut_f32_export)) - (func (export "get var i64 export") (result i64) (global.get $mut_i64_export)) - - (func (export "set var f32 import") (param f32) (global.set $mut_f32_import (local.get 0))) - (func (export "set var i64 import") (param i64) (global.set $mut_i64_import (local.get 0))) - - (func (export "set var f32 export") (param f32) (global.set $mut_f32_export (local.get 0))) - (func (export "set var f64 export") (param i64) (global.set $mut_i64_export (local.get 0))) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport-0.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport-0.wat deleted file mode 100644 index 7ab897c7..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport-0.wat +++ /dev/null @@ -1,8 +0,0 @@ -;; Copyright (C) 2019 Intel Corporation. All rights reserved. -;; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -(module - (global $mut_f32_export (export "var f32") (mut f32) (f32.const 7)) - (func (export "get var f32 export") (result f32) (global.get $mut_f32_export)) - (func (export "set var f32 export") (param f32) (global.set $mut_f32_export (local.get 0))) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport-1.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport-1.wat deleted file mode 100644 index 927e420d..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport-1.wat +++ /dev/null @@ -1,10 +0,0 @@ -;; Copyright (C) 2019 Intel Corporation. All rights reserved. -;; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -(module - (global $mut_f32_import (export "var f32") (import "globalexportimport-0" "var f32") (mut f32)) - (func (export "get var f32 export") (import "globalexportimport-0" "get var f32 export") (result f32)) - (func (export "set var f32 export") (import "globalexportimport-0" "set var f32 export") (param f32)) - (func (export "get var f32 import") (result f32) (global.get $mut_f32_import)) - (func (export "set var f32 import") (param f32) (global.set $mut_f32_import (local.get 0))) -)
\ No newline at end of file diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport.c deleted file mode 100644 index 1c1715f2..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/globalexportimport.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" -#include "wasm_export.h" -#include "bh_platform.h" - -extern bool -reader(const char *module_name, uint8 **p_buffer, uint32 *p_size); - -extern void -destroyer(uint8 *buffer, uint32 size); - -#define own - -wasm_global_t* get_export_global(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_global(exports->data[i])) { - printf("> Error accessing global export %zu!\n", i); - exit(1); - } - return wasm_extern_as_global(exports->data[i]); -} - -wasm_func_t* get_export_func(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_func(exports->data[i])) { - printf("> Error accessing function export %zu!\n", i); - exit(1); - } - return wasm_extern_as_func(exports->data[i]); -} - - -#define check(val, type, expected) \ - if (val.of.type != expected) { \ - printf("> Expected reading value %f or %f \n", expected, expected); \ - printf("> Error reading value %f or %f\n", val.of.type, val.of.type); \ - } - -#define check_global(global, type, expected) \ - { \ - wasm_val_t val; \ - wasm_global_get(global, &val); \ - check(val, type, expected); \ - } - -#define check_trap(trap) \ - if (trap) { \ - printf("> Error calling function\n"); \ - wasm_trap_delete(trap); \ - exit(1); \ - } - -#define check_call(func, type, expected) \ - { \ - wasm_val_vec_t results; \ - wasm_val_vec_new_uninitialized(&results, 1); \ - wasm_trap_t *trap = wasm_func_call(func, NULL, &results); \ - check_trap(trap); \ - check(results.data[0], type, expected); \ - } - -wasm_module_t * create_module_from_file(wasm_store_t* store, const char * filename) -{ - FILE* file = fopen(filename, "rb"); - fseek(file, 0L, SEEK_END); - size_t file_size = ftell(file); - fseek(file, 0L, SEEK_SET); - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return NULL; - } - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return NULL; - } - wasm_byte_vec_delete(&binary); - fclose(file); - return module; -} - - -int main(int argc, const char* argv[]) { - wasm_runtime_set_module_reader(reader, destroyer); - - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - wasm_module_t* moduleimport = - create_module_from_file(store, "globalimport.aot"); -#else - wasm_module_t* moduleimport = - create_module_from_file(store, "globalexportimport-1.wasm"); -#endif - - if (!moduleimport) { - return 1; - } - - // Instantiate. - printf("Instantiating Import module...\n"); - own wasm_instance_t* instance_import = - wasm_instance_new(store, moduleimport, NULL, NULL); //after this var_f32_export->inst_comm_rt is module_import - if (!instance_import) { - printf("> Error instantiating Import module!\n"); - return 1; - } - wasm_module_delete(moduleimport); - - // Extract export. - printf("Extracting exports from Import module...\n"); - own wasm_extern_vec_t exports_of_import; - wasm_instance_exports(instance_import, &exports_of_import); - int i = 0; - wasm_global_t *var_f32_export = get_export_global(&exports_of_import, i++); - wasm_func_t *get_var_f32_export = get_export_func(&exports_of_import, i++); - wasm_func_t* set_var_f32_export = get_export_func(&exports_of_import, i++); - wasm_func_t* get_var_f32_import = get_export_func(&exports_of_import, i++); - wasm_func_t* set_var_f32_import = get_export_func(&exports_of_import, i++); - - // Interact. - - // Check initial values. - printf("Check initial values...\n"); - check_global(var_f32_export, f32, 7.0); - check_call(get_var_f32_export, f32, 7.0); //Call to module export - check_call(get_var_f32_import, f32, 7.0); //Call to module import - - - // Modify variables through API and check again. - printf("Modify the variable to 37.0...\n"); - wasm_val_t val37 = {.kind = WASM_F32, .of = {.f32 = 37.0}}; - wasm_global_set(var_f32_export, &val37); // var_f32_export->inst_comm_rt is module_import now - - check_global(var_f32_export, f32, 37.0); - check_call(get_var_f32_export, f32, 37.0); //Call to module export Failed here, still 7 - check_call(get_var_f32_import, f32, 37.0); //Call to module import - - // Modify variables through calls and check again. - printf("Modify the variable to 77.0...\n"); - wasm_val_vec_t args77; - wasm_val_vec_new(&args77, 1, (wasm_val_t []){ {.kind = WASM_F32, .of = {.f32 = 77.0}} }); - wasm_trap_t *trap = wasm_func_call(set_var_f32_export, &args77, - NULL); // Call to module export - check_trap(trap); - check_call(get_var_f32_export, f32, 77.0); //Call to module export - check_global(var_f32_export, f32, 77.0); //Failed here, still 37 - check_call(get_var_f32_import, f32, 77.0); //Call to module import Failed here, still 37 - - - printf("Modify the variable to 78.0...\n"); - wasm_val_vec_t args78; - wasm_val_vec_new(&args78, 1, (wasm_val_t []){ {.kind = WASM_F32, .of = {.f32 = 78.0}} }); - trap = wasm_func_call(set_var_f32_import, &args78, NULL); - check_trap(trap); - check_global(var_f32_export, f32, 78.0); - check_call(get_var_f32_export, f32, 78.0); //Call to module export Failed here, still 77 - check_call(get_var_f32_import, f32, 78.0); //Call to module import - - - // wasm_extern_vec_delete(&exports_of_export); - //wasm_instance_delete(instance_export); - wasm_extern_vec_delete(&exports_of_import); - //wasm_instance_delete(instance_import); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; - -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hello.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hello.c deleted file mode 100644 index 3ebea87b..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hello.c +++ /dev/null @@ -1,138 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -// A function to be called from Wasm code. -own wasm_trap_t* hello_callback( - const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - printf("Calling back...\n"); - printf("> Hello World!\n"); - return NULL; -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("hello.aot", "rb"); -#else - FILE* file = fopen("hello.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Create external print functions. - printf("Creating callback...\n"); - own wasm_functype_t* hello_type = wasm_functype_new_0_0(); - own wasm_func_t* hello_func = - wasm_func_new(store, hello_type, hello_callback); - - wasm_functype_delete(hello_type); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_t* externs[] = { wasm_func_as_extern(hello_func) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_func_delete(hello_func); - - // Extract export. - printf("Extracting export...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size == 0) { - printf("> Error accessing exports!\n"); - return 1; - } - - const wasm_func_t* run_func = wasm_extern_as_func(exports.data[0]); - if (run_func == NULL) { - printf("> Error accessing export!\n"); - return 1; - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - - // Call. - printf("Calling export...\n"); - wasm_val_vec_t args = WASM_EMPTY_VEC; - wasm_val_vec_t results = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(run_func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - return 1; - } - - wasm_extern_vec_delete(&exports); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hello.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hello.wat deleted file mode 100644 index 1c56c558..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hello.wat +++ /dev/null @@ -1,4 +0,0 @@ -(module - (func $hello (import "" "hello")) - (func (export "run") (call $hello)) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hostref.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hostref.c deleted file mode 100644 index 219c862d..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hostref.c +++ /dev/null @@ -1,308 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - - -// A function to be called from Wasm code. -own wasm_trap_t* callback( - const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - printf("Calling back...\n> "); - printf("> %p\n", - args->data[0].of.ref ? wasm_ref_get_host_info(args->data[0].of.ref) : NULL); - wasm_val_copy(&results->data[0], &args->data[0]); - return NULL; -} - - -wasm_func_t* get_export_func(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_func(exports->data[i])) { - printf("> Error accessing function export %zu!\n", i); - exit(1); - } - return wasm_extern_as_func(exports->data[i]); -} - -wasm_global_t* get_export_global(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_global(exports->data[i])) { - printf("> Error accessing global export %zu!\n", i); - exit(1); - } - return wasm_extern_as_global(exports->data[i]); -} - -wasm_table_t* get_export_table(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_table(exports->data[i])) { - printf("> Error accessing table export %zu!\n", i); - exit(1); - } - return wasm_extern_as_table(exports->data[i]); -} - - -own wasm_ref_t* call_v_r(const wasm_func_t* func) { - printf("call_v_r... "); fflush(stdout); - wasm_val_t rs[] = { WASM_INIT_VAL }; - wasm_val_vec_t args = WASM_EMPTY_VEC; - wasm_val_vec_t results = WASM_ARRAY_VEC(rs); - wasm_trap_t *trap = wasm_func_call(func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - exit(1); - } - printf("okay\n"); - return rs[0].of.ref; -} - -void call_r_v(const wasm_func_t* func, wasm_ref_t* ref) { - printf("call_r_v... "); fflush(stdout); - wasm_val_t vs[1] = { WASM_REF_VAL(ref) }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vs); - wasm_val_vec_t results = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - exit(1); - } - printf("okay\n"); -} - -own wasm_ref_t* call_r_r(const wasm_func_t* func, wasm_ref_t* ref) { - printf("call_r_r... "); fflush(stdout); - wasm_val_t vs[1] = { WASM_REF_VAL(ref) }; - wasm_val_t rs[1] = { WASM_INIT_VAL }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vs); - wasm_val_vec_t results = WASM_ARRAY_VEC(rs); - wasm_trap_t *trap = wasm_func_call(func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - exit(1); - } - printf("okay\n"); - return rs[0].of.ref; -} - -void call_ir_v(const wasm_func_t* func, int32_t i, wasm_ref_t* ref) { - printf("call_ir_v... "); fflush(stdout); - wasm_val_t vs[2] = { WASM_I32_VAL(i), WASM_REF_VAL(ref) }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vs); - wasm_val_vec_t results = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - exit(1); - } - printf("okay\n"); -} - -own wasm_ref_t* call_i_r(const wasm_func_t* func, int32_t i) { - printf("call_i_r... "); fflush(stdout); - wasm_val_t vs[1] = { WASM_I32_VAL(i) }; - wasm_val_t rs[1] = { WASM_INIT_VAL }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vs); - wasm_val_vec_t results = WASM_ARRAY_VEC(rs); - wasm_trap_t *trap = wasm_func_call(func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - exit(1); - } - printf("okay\n"); - return rs[0].of.ref; -} - -void check(own wasm_ref_t* actual, const wasm_ref_t* expected) { - if (actual != expected && - !(actual && expected && wasm_ref_same(actual, expected))) { - printf("> Error reading reference, expected %p, got %p\n", - expected ? wasm_ref_get_host_info(expected) : NULL, - actual ? wasm_ref_get_host_info(actual) : NULL); - exit(1); - } - // if (actual) wasm_ref_delete(actual); -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("hostref.aot", "rb"); -#else - FILE* file = fopen("hostref.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Create external callback function. - printf("Creating callback...\n"); - own wasm_functype_t* callback_type = wasm_functype_new_1_1( - wasm_valtype_new(WASM_ANYREF), wasm_valtype_new(WASM_ANYREF)); - own wasm_func_t* callback_func = - wasm_func_new(store, callback_type, callback); - - wasm_functype_delete(callback_type); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_t* externs[] = { wasm_func_as_extern(callback_func) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_func_delete(callback_func); - wasm_module_delete(module); - - // Extract export. - printf("Extracting exports...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - size_t i = 0; - wasm_global_t* global = get_export_global(&exports, i++); - wasm_table_t* table = get_export_table(&exports, i++); - wasm_func_t* global_set = get_export_func(&exports, i++); - wasm_func_t* global_get = get_export_func(&exports, i++); - wasm_func_t* table_set = get_export_func(&exports, i++); - wasm_func_t* table_get = get_export_func(&exports, i++); - wasm_func_t* func_call = get_export_func(&exports, i++); - - wasm_instance_delete(instance); - - // Create host references. - printf("Creating host references...\n"); - own wasm_ref_t* host1 = wasm_foreign_as_ref(wasm_foreign_new(store)); - own wasm_ref_t* host2 = wasm_foreign_as_ref(wasm_foreign_new(store)); - wasm_ref_set_host_info(host1, (void*)1); - wasm_ref_set_host_info(host2, (void*)2); - - // Some sanity checks. - check(NULL, NULL); - wasm_ref_t *host1_cp = wasm_ref_copy(host1); - wasm_ref_t *host2_cp = wasm_ref_copy(host2); - check(host1_cp, host1); - check(host2_cp, host2); - wasm_ref_delete(host1_cp); - wasm_ref_delete(host2_cp); - - own wasm_val_t val; - val.kind = WASM_ANYREF; - val.of.ref = wasm_ref_copy(host1); - wasm_ref_t *ref_cp = wasm_ref_copy(val.of.ref); - check(ref_cp, host1); - check(val.of.ref, host1); - wasm_ref_delete(val.of.ref); - wasm_ref_delete(ref_cp); - - // Interact. - printf("Accessing global...\n"); - check(call_v_r(global_get), NULL); - call_r_v(global_set, host1); - check(call_v_r(global_get), host1); - call_r_v(global_set, host2); - check(call_v_r(global_get), host2); - call_r_v(global_set, NULL); - check(call_v_r(global_get), NULL); - - wasm_global_get(global, &val); - assert(val.kind == WASM_ANYREF); - assert(val.of.ref == NULL); - val.of.ref = host2; - wasm_global_set(global, &val); - wasm_global_get(global, &val); - assert(val.kind == WASM_ANYREF); - assert(val.of.ref == host2); - - printf("Accessing table...\n"); - check(call_i_r(table_get, 0), NULL); - check(call_i_r(table_get, 1), NULL); - call_ir_v(table_set, 0, host1); - call_ir_v(table_set, 1, host2); - check(call_i_r(table_get, 0), host1); - check(call_i_r(table_get, 1), host2); - call_ir_v(table_set, 0, NULL); - check(call_i_r(table_get, 0), NULL); - - check(wasm_table_get(table, 2), NULL); - wasm_table_set(table, 2, host1); - check(call_i_r(table_get, 2), host1); - check(wasm_table_get(table, 2), host1); - - printf("Accessing function...\n"); - check(call_r_r(func_call, NULL), NULL); - check(call_r_r(func_call, host1), host1); - check(call_r_r(func_call, host2), host2); - - wasm_ref_delete(host1); - wasm_ref_delete(host2); - - wasm_extern_vec_delete(&exports); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hostref.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hostref.wat deleted file mode 100644 index 9ed43dbc..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/hostref.wat +++ /dev/null @@ -1,24 +0,0 @@ -(module - (import "" "f" (func $fun (param externref) (result externref))) - - (global $glob (export "global") (mut externref) (ref.null extern)) - (table $tab (export "table") 10 externref) - - (func (export "global.set") (param $r externref) - (global.set $glob (local.get $r)) - ) - (func (export "global.get") (result externref) - (global.get $glob) - ) - - (func (export "table.set") (param $i i32) (param $r externref) - (table.set $tab (local.get $i) (local.get $r)) - ) - (func (export "table.get") (param $i i32) (result externref) - (table.get $tab (local.get $i)) - ) - - (func (export "func.call") (param $r externref) (result externref) - (call $fun (local.get $r)) - ) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/memory.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/memory.c deleted file mode 100644 index 737dd850..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/memory.c +++ /dev/null @@ -1,235 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - - -wasm_memory_t* get_export_memory(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_memory(exports->data[i])) { - printf("> Error accessing memory export %zu!\n", i); - exit(1); - } - return wasm_extern_as_memory(exports->data[i]); -} - -wasm_func_t* get_export_func(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_func(exports->data[i])) { - printf("> Error accessing function export %zu!\n", i); - exit(1); - } - return wasm_extern_as_func(exports->data[i]); -} - - -void check(bool success) { - if (!success) { - printf("> Error, expected success\n"); - exit(1); - } -} - -void check_call(wasm_func_t* func, int i, wasm_val_t args[], int32_t expected) { - wasm_val_t r[] = {WASM_INIT_VAL}; - wasm_val_vec_t args_ = {i, args, i, sizeof(wasm_val_t), NULL}; - wasm_val_vec_t results = WASM_ARRAY_VEC(r); - wasm_trap_t *trap = wasm_func_call(func, &args_, &results); - if (trap) { - printf("> Error on result\n"); - wasm_trap_delete(trap); - exit(1); - } - - if (r[0].of.i32 != expected) { - printf("> Error on result\n"); - exit(1); - } -} - -void check_call0(wasm_func_t* func, int32_t expected) { - check_call(func, 0, NULL, expected); -} - -void check_call1(wasm_func_t* func, int32_t arg, int32_t expected) { - wasm_val_t args[] = { WASM_I32_VAL(arg) }; - check_call(func, 1, args, expected); -} - -void check_call2(wasm_func_t* func, int32_t arg1, int32_t arg2, int32_t expected) { - wasm_val_t args[] = { WASM_I32_VAL(arg1), WASM_I32_VAL(arg2) }; - check_call(func, 2, args, expected); -} - -void check_ok(wasm_func_t* func, int i, wasm_val_t args[]) { - wasm_val_vec_t args_ = {i, args, i, sizeof(wasm_val_t), NULL}; - wasm_val_vec_t results = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(func, &args_, &results); - if (trap) { - printf("> Error on result, expected empty\n"); - wasm_trap_delete(trap); - exit(1); - } -} - -void check_ok2(wasm_func_t* func, int32_t arg1, int32_t arg2) { - wasm_val_t args[] = { WASM_I32_VAL(arg1), WASM_I32_VAL(arg2) }; - check_ok(func, 2, args); -} - -void check_trap(wasm_func_t* func, int i, wasm_val_t args[]) { - wasm_val_t r[] = {WASM_INIT_VAL}; - wasm_val_vec_t args_ = {i, args, i, sizeof(wasm_val_t), NULL}; - wasm_val_vec_t results = WASM_ARRAY_VEC(r); - own wasm_trap_t* trap = wasm_func_call(func, &args_, &results); - if (! trap) { - printf("> Error on result, expected trap\n"); - exit(1); - } - wasm_trap_delete(trap); -} - -void check_trap1(wasm_func_t* func, int32_t arg) { - wasm_val_t args[] = { WASM_I32_VAL(arg) }; - check_trap(func, 1, args); -} - -void check_trap2(wasm_func_t* func, int32_t arg1, int32_t arg2) { - wasm_val_t args[] = { WASM_I32_VAL(arg1), WASM_I32_VAL(arg2) }; - check_trap(func, 2, args); -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("memory.aot", "rb"); -#else - FILE* file = fopen("memory.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_vec_t imports = WASM_EMPTY_VEC; - own wasm_instance_t *instance = wasm_instance_new_with_args( - store, module, &imports, NULL, KILOBYTE(32), 0); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - // Extract export. - printf("Extracting exports...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - size_t i = 0; - wasm_memory_t* memory = get_export_memory(&exports, i++); - wasm_func_t* size_func = get_export_func(&exports, i++); - wasm_func_t* load_func = get_export_func(&exports, i++); - wasm_func_t* store_func = get_export_func(&exports, i++); - - wasm_module_delete(module); - - // Try cloning. - own wasm_memory_t* copy = wasm_memory_copy(memory); - assert(wasm_memory_same(memory, copy)); - wasm_memory_delete(copy); - - // Check initial memory. - printf("Checking memory...\n"); - check(wasm_memory_size(memory) == 2); - check(wasm_memory_data_size(memory) == 0x20000); - check(wasm_memory_data(memory)[0] == 0); - check(wasm_memory_data(memory)[0x1000] == 1); - check(wasm_memory_data(memory)[0x1003] == 4); - - check_call0(size_func, 2); - check_call1(load_func, 0, 0); - check_call1(load_func, 0x1000, 1); - check_call1(load_func, 0x1003, 4); - check_call1(load_func, 0x1ffff, 0); - check_trap1(load_func, 0x20000); - - // Mutate memory. - printf("Mutating memory...\n"); - wasm_memory_data(memory)[0x1003] = 5; - check_ok2(store_func, 0x1002, 6); - check_trap2(store_func, 0x20000, 0); - - check(wasm_memory_data(memory)[0x1002] == 6); - check(wasm_memory_data(memory)[0x1003] == 5); - check_call1(load_func, 0x1002, 6); - check_call1(load_func, 0x1003, 5); - - // Grow memory. - // DO NOT SUPPORT - printf("Bypass Growing memory...\n"); - wasm_extern_vec_delete(&exports); - wasm_instance_delete(instance); - - // Create stand-alone memory. - // DO NOT SUPPORT - // TODO(wasm+): Once Wasm allows multiple memories, turn this into import. - printf("Bypass Creating stand-alone memory...\n"); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/memory.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/memory.wat deleted file mode 100644 index 4cf43e2c..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/memory.wat +++ /dev/null @@ -1,11 +0,0 @@ -(module - (memory (export "memory") 2 3) - - (func (export "size") (result i32) (memory.size)) - (func (export "load") (param i32) (result i32) (i32.load8_s (local.get 0))) - (func (export "store") (param i32 i32) - (i32.store8 (local.get 0) (local.get 1)) - ) - - (data (i32.const 0x1000) "\01\02\03\04") -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/multi.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/multi.c deleted file mode 100644 index a1c8fa9f..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/multi.c +++ /dev/null @@ -1,163 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -// A function to be called from Wasm code. -own wasm_trap_t* callback( - const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - printf("Calling back...\n> "); - printf("> %"PRIu32" %"PRIu64" %"PRIu64" %"PRIu32"\n", - args->data[0].of.i32, args->data[1].of.i64, - args->data[2].of.i64, args->data[3].of.i32); - printf("\n"); - - wasm_val_copy(&results->data[0], &args->data[3]); - wasm_val_copy(&results->data[1], &args->data[1]); - wasm_val_copy(&results->data[2], &args->data[2]); - wasm_val_copy(&results->data[3], &args->data[0]); - return NULL; -} - - -// A function closure. -own wasm_trap_t* closure_callback( - void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - int i = *(int*)env; - printf("Calling back closure...\n"); - printf("> %d\n", i); - - results->data[0].kind = WASM_I32; - results->data[0].of.i32 = (int32_t)i; - return NULL; -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("multi.aot", "rb"); -#else - FILE* file = fopen("multi.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - fseek(file, 0L, SEEK_END); - size_t file_size = ftell(file); - fseek(file, 0L, SEEK_SET); - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Create external print functions. - printf("Creating callback...\n"); - wasm_valtype_t* types[4] = { - wasm_valtype_new_i32(), wasm_valtype_new_i64(), - wasm_valtype_new_i64(), wasm_valtype_new_i32() - }; - own wasm_valtype_vec_t tuple1, tuple2; - wasm_valtype_vec_new(&tuple1, 4, types); - wasm_valtype_vec_copy(&tuple2, &tuple1); - own wasm_functype_t* callback_type = wasm_functype_new(&tuple1, &tuple2); - own wasm_func_t* callback_func = - wasm_func_new(store, callback_type, callback); - - wasm_functype_delete(callback_type); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_t* externs[] = { wasm_func_as_extern(callback_func) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_func_delete(callback_func); - - // Extract export. - printf("Extracting export...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size == 0) { - printf("> Error accessing exports!\n"); - return 1; - } - const wasm_func_t* run_func = wasm_extern_as_func(exports.data[0]); - if (run_func == NULL) { - printf("> Error accessing export!\n"); - return 1; - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - - // Call. - printf("Calling export...\n"); - wasm_val_t vals[4] = { - WASM_I32_VAL(1), WASM_I64_VAL(2), WASM_I64_VAL(3), WASM_I32_VAL(4) - }; - wasm_val_t res[4] = { - WASM_INIT_VAL, WASM_INIT_VAL, WASM_INIT_VAL, WASM_INIT_VAL - }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vals); - wasm_val_vec_t results = WASM_ARRAY_VEC(res); - wasm_trap_t *trap = wasm_func_call(run_func, &args, &results); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - return 1; - } - - wasm_extern_vec_delete(&exports); - - // Print result. - printf("Printing result...\n"); - printf("> %"PRIu32" %"PRIu64" %"PRIu64" %"PRIu32"\n", - res[0].of.i32, res[1].of.i64, res[2].of.i64, res[3].of.i32); - - assert(res[0].of.i32 == 4); - assert(res[1].of.i64 == 3); - assert(res[2].of.i64 == 2); - assert(res[3].of.i32 == 1); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/multi.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/multi.wat deleted file mode 100644 index e7fb3311..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/multi.wat +++ /dev/null @@ -1,7 +0,0 @@ -(module - (func $f (import "" "f") (param i32 i64 i64 i32) (result i32 i64 i64 i32)) - - (func $g (export "g") (param i32 i64 i64 i32) (result i32 i64 i64 i32) - (call $f (local.get 0) (local.get 2) (local.get 1) (local.get 3)) - ) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/reflect.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/reflect.c deleted file mode 100644 index a595fd3e..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/reflect.c +++ /dev/null @@ -1,207 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -void print_mutability(wasm_mutability_t mut) { - switch (mut) { - case WASM_VAR: printf("var"); break; - case WASM_CONST: printf("const"); break; - } -} - -void print_limits(const wasm_limits_t* limits) { - if (!limits) { - printf("unknown limits"); - return; - } - printf("%ud", limits->min); - if (limits->max < wasm_limits_max_default) printf(" %ud", limits->max); -} - -void print_valtype(const wasm_valtype_t* type) { - switch (wasm_valtype_kind(type)) { - case WASM_I32: printf("i32"); break; - case WASM_I64: printf("i64"); break; - case WASM_F32: printf("f32"); break; - case WASM_F64: printf("f64"); break; - case WASM_ANYREF: printf("anyref"); break; - case WASM_FUNCREF: printf("funcref"); break; - } -} - -void print_valtypes(const wasm_valtype_vec_t* types) { - bool first = true; - for (size_t i = 0; i < types->size; ++i) { - if (first) { - first = false; - } else { - printf(" "); - } - print_valtype(types->data[i]); - } -} - -void print_externtype(const wasm_externtype_t* type) { - if (!type) { - printf("unknown extern type"); - return; - } - switch (wasm_externtype_kind(type)) { - case WASM_EXTERN_FUNC: { - const wasm_functype_t* functype = - wasm_externtype_as_functype_const(type); - printf("func "); - print_valtypes(wasm_functype_params(functype)); - printf(" -> "); - print_valtypes(wasm_functype_results(functype)); - } break; - case WASM_EXTERN_GLOBAL: { - const wasm_globaltype_t* globaltype = - wasm_externtype_as_globaltype_const(type); - printf("global "); - print_mutability(wasm_globaltype_mutability(globaltype)); - printf(" "); - print_valtype(wasm_globaltype_content(globaltype)); - } break; - case WASM_EXTERN_TABLE: { - const wasm_tabletype_t* tabletype = - wasm_externtype_as_tabletype_const(type); - printf("table "); - print_limits(wasm_tabletype_limits(tabletype)); - printf(" "); - print_valtype(wasm_tabletype_element(tabletype)); - } break; - case WASM_EXTERN_MEMORY: { - const wasm_memorytype_t* memorytype = - wasm_externtype_as_memorytype_const(type); - printf("memory "); - print_limits(wasm_memorytype_limits(memorytype)); - } break; - } -} - -void print_name(const wasm_name_t* name) { - if (!name) { - printf("unknown name"); - return; - } - printf("\"%.*s\"", (int)name->size, name->data); -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("reflect.aot", "rb"); -#else - FILE* file = fopen("reflect.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_vec_t imports = WASM_EMPTY_VEC; - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - // Extract export. - printf("Extracting export...\n"); - own wasm_exporttype_vec_t export_types; - own wasm_extern_vec_t exports; - wasm_module_exports(module, &export_types); - wasm_instance_exports(instance, &exports); - assert(exports.size == export_types.size); - - for (size_t i = 0; i < exports.size; ++i) { - assert(wasm_extern_kind(exports.data[i]) == - wasm_externtype_kind(wasm_exporttype_type(export_types.data[i]))); - printf("> export %zu ", i); - print_name(wasm_exporttype_name(export_types.data[i])); - printf("\n"); - printf(">> initial: "); - print_externtype(wasm_exporttype_type(export_types.data[i])); - printf("\n"); - printf(">> current: "); - own wasm_externtype_t* current = wasm_extern_type(exports.data[i]); - print_externtype(current); - wasm_externtype_delete(current); - printf("\n"); - if (wasm_extern_kind(exports.data[i]) == WASM_EXTERN_FUNC) { - wasm_func_t* func = wasm_extern_as_func(exports.data[i]); - printf(">> in-arity: %zu", wasm_func_param_arity(func)); - printf(", out-arity: %zu\n", wasm_func_result_arity(func)); - } - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - wasm_extern_vec_delete(&exports); - wasm_exporttype_vec_delete(&export_types); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/reflect.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/reflect.wat deleted file mode 100644 index 7a80e86d..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/reflect.wat +++ /dev/null @@ -1,6 +0,0 @@ -(module - (func (export "func") (param i32 f64 f32) (result i32) (unreachable)) - (global (export "global") f64 (f64.const 0)) - (table (export "table") 0 50 funcref) - (memory (export "memory") 1) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/serialize.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/serialize.c deleted file mode 100644 index 83436817..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/serialize.c +++ /dev/null @@ -1,131 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -// A function to be called from Wasm code. -own wasm_trap_t * -hello_callback(const wasm_val_vec_t *args, wasm_val_vec_t *results) -{ - printf("Calling back...\n"); - printf("> Hello World!\n"); - return NULL; -} - -int -main(int argc, const char *argv[]) -{ - // Initialize. - printf("Initializing...\n"); - wasm_engine_t *engine = wasm_engine_new(); - wasm_store_t *store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); - FILE *file = fopen("serialize.wasm", "rb"); - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - fseek(file, 0L, SEEK_END); - size_t file_size = ftell(file); - fseek(file, 0L, SEEK_SET); - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t *module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Serialize module. - printf("Serializing module...\n"); - own wasm_byte_vec_t serialized; - wasm_module_serialize(module, &serialized); - - wasm_module_delete(module); - - // Deserialize module. - printf("Deserializing module...\n"); - own wasm_module_t *deserialized = - wasm_module_deserialize(store, &serialized); - if (!deserialized) { - printf("> Error deserializing module!\n"); - return 1; - } - - wasm_byte_vec_delete(&serialized); - - // Create external print functions. - printf("Creating callback...\n"); - own wasm_functype_t *hello_type = wasm_functype_new_0_0(); - own wasm_func_t *hello_func = - wasm_func_new(store, hello_type, hello_callback); - - wasm_functype_delete(hello_type); - - // Instantiate. - printf("Instantiating deserialized module...\n"); - wasm_extern_t *externs[] = { wasm_func_as_extern(hello_func) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t *instance = - wasm_instance_new(store, deserialized, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_func_delete(hello_func); - - // Extract export. - printf("Extracting export...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size == 0) { - printf("> Error accessing exports!\n"); - return 1; - } - const wasm_func_t *run_func = wasm_extern_as_func(exports.data[0]); - if (run_func == NULL) { - printf("> Error accessing export!\n"); - return 1; - } - - wasm_module_delete(deserialized); - wasm_instance_delete(instance); - - // Call. - printf("Calling export...\n"); - wasm_val_vec_t empty = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(run_func, &empty, &empty); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - return 1; - } - - wasm_extern_vec_delete(&exports); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/serialize.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/serialize.wat deleted file mode 100644 index 1c56c558..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/serialize.wat +++ /dev/null @@ -1,4 +0,0 @@ -(module - (func $hello (import "" "hello")) - (func (export "run") (call $hello)) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/table.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/table.c deleted file mode 100644 index c4a7da8b..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/table.c +++ /dev/null @@ -1,218 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -// A function to be called from Wasm code. -own wasm_trap_t* neg_callback( - const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - printf("Calling back...\n"); - results->data[0].kind = WASM_I32; - results->data[0].of.i32 = -args->data[0].of.i32; - return NULL; -} - - -wasm_table_t* get_export_table(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_table(exports->data[i])) { - printf("> Error accessing table export %zu!\n", i); - exit(1); - } - return wasm_extern_as_table(exports->data[i]); -} - -wasm_func_t* get_export_func(const wasm_extern_vec_t* exports, size_t i) { - if (exports->size <= i || !wasm_extern_as_func(exports->data[i])) { - printf("> Error accessing function export %zu!\n", i); - exit(1); - } - return wasm_extern_as_func(exports->data[i]); -} - - -void check(bool success) { - if (!success) { - printf("> Error, expected success\n"); - exit(1); - } -} - -void check_table(wasm_table_t* table, int32_t i, bool expect_set) { - own wasm_ref_t* ref = wasm_table_get(table, i); - check((ref != NULL) == expect_set); - if (ref) wasm_ref_delete(ref); -} - -void check_call(wasm_func_t* func, int32_t arg1, int32_t arg2, int32_t expected) { - wasm_val_t vs[2] = { WASM_I32_VAL(arg1), WASM_I32_VAL(arg2) }; - wasm_val_t r[1] = { WASM_INIT_VAL }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vs); - wasm_val_vec_t results = WASM_ARRAY_VEC(r); - wasm_trap_t *trap = wasm_func_call(func, &args, &results); - if (trap) { - printf("> Error on calling\n"); - wasm_trap_delete(trap); - exit(1); - } - - if (r[0].of.i32 != expected) { - printf("> Error on result\n"); - exit(1); - } -} - -void check_trap(wasm_func_t* func, int32_t arg1, int32_t arg2) { - wasm_val_t vs[2] = { WASM_I32_VAL(arg1), WASM_I32_VAL(arg2) }; - wasm_val_t r[1] = { WASM_INIT_VAL }; - wasm_val_vec_t args = WASM_ARRAY_VEC(vs); - wasm_val_vec_t results = WASM_ARRAY_VEC(r); - own wasm_trap_t* trap = wasm_func_call(func, &args, &results); - if (! trap) { - printf("> Error on result, expected trap\n"); - exit(1); - } - wasm_trap_delete(trap); -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("table.aot", "rb"); -#else - FILE* file = fopen("table.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_vec_t imports = WASM_EMPTY_VEC; - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - // Extract export. - printf("Extracting exports...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - size_t i = 0; - wasm_table_t* table = get_export_table(&exports, i++); - wasm_func_t* call_indirect = get_export_func(&exports, i++); - wasm_func_t* f = get_export_func(&exports, i++); - wasm_func_t* g = get_export_func(&exports, i++); - - wasm_module_delete(module); - - // Create external function. - printf("Creating callback...\n"); - own wasm_functype_t* neg_type = wasm_functype_new_1_1(wasm_valtype_new_i32(), wasm_valtype_new_i32()); - own wasm_func_t* h = wasm_func_new(store, neg_type, neg_callback); - - wasm_functype_delete(neg_type); - - // Try cloning. - own wasm_table_t* copy = wasm_table_copy(table); - assert(wasm_table_same(table, copy)); - wasm_table_delete(copy); - - // Check initial table. - printf("Checking table...\n"); - check(wasm_table_size(table) == 2); - check_table(table, 0, false); - check_table(table, 1, true); - check_trap(call_indirect, 0, 0); - check_call(call_indirect, 7, 1, 7); - check_trap(call_indirect, 0, 2); - - // Mutate table. - printf("Mutating table...\n"); - check(wasm_table_set(table, 0, wasm_func_as_ref(g))); - check(wasm_table_set(table, 1, NULL)); - wasm_ref_t *ref_f = wasm_func_as_ref(f); - check(! wasm_table_set(table, 2, ref_f)); - wasm_ref_delete(ref_f); - check_table(table, 0, true); - check_table(table, 1, false); - check_call(call_indirect, 7, 0, 666); - check_trap(call_indirect, 0, 1); - check_trap(call_indirect, 0, 2); - - // Grow table. - // DO NOT SUPPORT - printf("Bypass Growing table...\n"); - - wasm_func_delete(h); - wasm_extern_vec_delete(&exports); - wasm_instance_delete(instance); - - // Create stand-alone table. - // DO NOT SUPPORT - // TODO(wasm+): Once Wasm allows multiple tables, turn this into import. - printf("Bypass Creating stand-alone table...\n"); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/table.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/table.wat deleted file mode 100644 index d3e3a945..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/table.wat +++ /dev/null @@ -1,12 +0,0 @@ -(module - (table (export "table") 2 10 funcref) - - (func (export "call_indirect") (param i32 i32) (result i32) - (call_indirect (param i32) (result i32) (local.get 0) (local.get 1)) - ) - - (func $f (export "f") (param i32) (result i32) (local.get 0)) - (func (export "g") (param i32) (result i32) (i32.const 666)) - - (elem (i32.const 1) $f) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/threads.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/threads.c deleted file mode 100644 index cbe4aaf4..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/threads.c +++ /dev/null @@ -1,187 +0,0 @@ -#include <inttypes.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <pthread.h> -#include <unistd.h> - -#include "wasm_c_api.h" - -#define own - -const int N_THREADS = 10; -const int N_REPS = 3; - -// A function to be called from Wasm code. -own wasm_trap_t * -callback(const wasm_val_vec_t *args, wasm_val_vec_t *results) -{ - assert(args->data[0].kind == WASM_I32); - printf("> Thread %d running\n", args->data[0].of.i32); - return NULL; -} - -typedef struct { - wasm_engine_t *engine; - wasm_shared_module_t *module; - int id; -} thread_args; - -void * -run(void *args_abs) -{ - thread_args *args = (thread_args *)args_abs; - - // Rereate store and module. - own wasm_store_t *store = wasm_store_new(args->engine); - own wasm_module_t *module = wasm_module_obtain(store, args->module); - - // Run the example N times. - for (int i = 0; i < N_REPS; ++i) { - usleep(100000); - - // Create imports. - own wasm_functype_t *func_type = - wasm_functype_new_1_0(wasm_valtype_new_i32()); - own wasm_func_t *func = wasm_func_new(store, func_type, callback); - wasm_functype_delete(func_type); - - wasm_val_t val = WASM_I32_VAL((int32_t)args->id); - own wasm_globaltype_t *global_type = - wasm_globaltype_new(wasm_valtype_new_i32(), WASM_CONST); - own wasm_global_t *global = wasm_global_new(store, global_type, &val); - wasm_globaltype_delete(global_type); - - // Instantiate. - wasm_extern_t *externs[] = { - wasm_func_as_extern(func), - wasm_global_as_extern(global), - }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t *instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return NULL; - } - - wasm_func_delete(func); - wasm_global_delete(global); - - // Extract export. - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size == 0) { - printf("> Error accessing exports!\n"); - return NULL; - } - const wasm_func_t *run_func = wasm_extern_as_func(exports.data[0]); - if (run_func == NULL) { - printf("> Error accessing export!\n"); - return NULL; - } - - wasm_instance_delete(instance); - - // Call. - wasm_val_vec_t empty = WASM_EMPTY_VEC; - wasm_trap_t *trap = wasm_func_call(run_func, &empty, &empty); - if (trap) { - printf("> Error calling function!\n"); - wasm_trap_delete(trap); - return NULL; - } - - wasm_extern_vec_delete(&exports); - } - - wasm_module_delete(module); - wasm_store_delete(store); - - free(args_abs); - - return NULL; -} - -int -main(int argc, const char *argv[]) -{ - // Initialize. - wasm_engine_t *engine = wasm_engine_new(); - - // Load binary. -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE *file = fopen("threads.aot", "rb"); -#else - FILE *file = fopen("threads.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - return 1; - } - fclose(file); - - // Compile and share. - own wasm_store_t *store = wasm_store_new(engine); - own wasm_module_t *module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - own wasm_shared_module_t *shared = wasm_module_share(module); - - wasm_module_delete(module); - wasm_store_delete(store); - - // Spawn threads. - pthread_t threads[N_THREADS]; - for (int i = 0; i < N_THREADS; i++) { - thread_args *args = malloc(sizeof(thread_args)); - args->id = i; - args->engine = engine; - args->module = shared; - printf("Initializing thread %d...\n", i); - pthread_create(&threads[i], NULL, &run, args); - } - - for (int i = 0; i < N_THREADS; i++) { - printf("Waiting for thread: %d\n", i); - pthread_join(threads[i], NULL); - } - - wasm_shared_module_delete(shared); - wasm_engine_delete(engine); - - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/threads.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/threads.wat deleted file mode 100644 index 29a3bbcc..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/threads.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (func $message (import "" "hello") (param i32)) - (global $id (import "" "id") i32) - (func (export "run") (call $message (global.get $id))) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/trap.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/trap.c deleted file mode 100644 index 2637b734..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/trap.c +++ /dev/null @@ -1,184 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> - -#include "wasm_c_api.h" - -#define own - -// A function to be called from Wasm code. -own wasm_trap_t* fail_callback( - void* env, const wasm_val_vec_t* args, wasm_val_vec_t* results -) { - printf("Calling back...\n"); - own wasm_name_t message; - wasm_name_new_from_string_nt(&message, "callback abort"); - own wasm_trap_t* trap = wasm_trap_new((wasm_store_t*)env, &message); - wasm_name_delete(&message); - return trap; -} - - -void print_frame(wasm_frame_t* frame) { - printf("> %p @ 0x%zx = %"PRIu32".0x%zx\n", - wasm_frame_instance(frame), - wasm_frame_module_offset(frame), - wasm_frame_func_index(frame), - wasm_frame_func_offset(frame) - ); -} - - -int main(int argc, const char* argv[]) { - // Initialize. - printf("Initializing...\n"); - wasm_engine_t* engine = wasm_engine_new(); - wasm_store_t* store = wasm_store_new(engine); - - // Load binary. - printf("Loading binary...\n"); -#if WASM_ENABLE_AOT != 0 && WASM_ENABLE_INTERP == 0 - FILE* file = fopen("trap.aot", "rb"); -#else - FILE* file = fopen("trap.wasm", "rb"); -#endif - if (!file) { - printf("> Error loading module!\n"); - return 1; - } - - int ret = fseek(file, 0L, SEEK_END); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - long file_size = ftell(file); - if (file_size == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - ret = fseek(file, 0L, SEEK_SET); - if (ret == -1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - - wasm_byte_vec_t binary; - wasm_byte_vec_new_uninitialized(&binary, file_size); - if (fread(binary.data, file_size, 1, file) != 1) { - printf("> Error loading module!\n"); - fclose(file); - return 1; - } - fclose(file); - - // Compile. - printf("Compiling module...\n"); - own wasm_module_t* module = wasm_module_new(store, &binary); - if (!module) { - printf("> Error compiling module!\n"); - return 1; - } - - wasm_byte_vec_delete(&binary); - - // Create external print functions. - printf("Creating callback...\n"); - own wasm_functype_t* fail_type = - wasm_functype_new_0_1(wasm_valtype_new_i32()); - own wasm_func_t* fail_func = - wasm_func_new_with_env(store, fail_type, fail_callback, store, NULL); - - wasm_functype_delete(fail_type); - - // Instantiate. - printf("Instantiating module...\n"); - wasm_extern_t* externs[] = { wasm_func_as_extern(fail_func) }; - wasm_extern_vec_t imports = WASM_ARRAY_VEC(externs); - own wasm_instance_t* instance = - wasm_instance_new(store, module, &imports, NULL); - if (!instance) { - printf("> Error instantiating module!\n"); - return 1; - } - - wasm_func_delete(fail_func); - - // Extract export. - printf("Extracting exports...\n"); - own wasm_extern_vec_t exports; - wasm_instance_exports(instance, &exports); - if (exports.size < 2) { - printf("> Error accessing exports!\n"); - return 1; - } - - wasm_module_delete(module); - wasm_instance_delete(instance); - - // Call. - for (int i = 0; i < 2; ++i) { - const wasm_func_t* func = wasm_extern_as_func(exports.data[i]); - if (func == NULL) { - printf("> Error accessing export!\n"); - return 1; - } - - printf("Calling export %d...\n", i); - wasm_val_vec_t args = WASM_EMPTY_VEC; - wasm_val_vec_t results = WASM_EMPTY_VEC; - own wasm_trap_t* trap = wasm_func_call(func, &args, &results); - if (!trap) { - printf("> Error calling function, expected trap!\n"); - return 1; - } - - printf("Printing message...\n"); - own wasm_name_t message; - wasm_trap_message(trap, &message); - printf("> %s\n", message.data); - assert(message.num_elems > 0); - assert(strncmp(message.data, "Exception: ", strlen("Exception: ")) == 0); - - printf("Printing origin...\n"); - own wasm_frame_t* frame = wasm_trap_origin(trap); - if (frame) { - print_frame(frame); - wasm_frame_delete(frame); - } else { - printf("> Empty origin.\n"); - } - - printf("Printing trace...\n"); - own wasm_frame_vec_t trace; - wasm_trap_trace(trap, &trace); - if (trace.size > 0) { - for (size_t i = 0; i < trace.size; ++i) { - print_frame(trace.data[i]); - } - } else { - printf("> Empty trace.\n"); - } - - wasm_frame_vec_delete(&trace); - wasm_trap_delete(trap); - wasm_name_delete(&message); - } - - wasm_extern_vec_delete(&exports); - - // Shut down. - printf("Shutting down...\n"); - wasm_store_delete(store); - wasm_engine_delete(engine); - - // All done. - printf("Done.\n"); - return 0; -} diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/trap.wat b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/trap.wat deleted file mode 100644 index dfd20fb1..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/trap.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (func $callback (import "" "callback") (result i32)) - (func (export "callback") (result i32) (call $callback)) - (func (export "unreachable") (result i32) (unreachable) (i32.const 1)) -) diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/utils/multi_module_utils.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/utils/multi_module_utils.c deleted file mode 100644 index 67010914..00000000 --- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/wasm-c-api/src/utils/multi_module_utils.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -#include "bh_read_file.h" -#include "wasm_export.h" - -static char * -build_module_path(const char *module_name) -{ - const char *module_search_path = "."; - const char *format = "%s/%s.wasm"; - int sz = strlen(module_search_path) + strlen("/") + strlen(module_name) - + strlen(".wasm") + 1; - char *wasm_file_name = BH_MALLOC(sz); - if (!wasm_file_name) { - return NULL; - } - - snprintf(wasm_file_name, sz, format, module_search_path, module_name); - return wasm_file_name; -} - -bool -reader(const char *module_name, uint8 **p_buffer, uint32 *p_size) -{ - char *wasm_file_path = build_module_path(module_name); - if (!wasm_file_path) { - return false; - } - - *p_buffer = (uint8_t *)bh_read_file_to_buffer(wasm_file_path, p_size); - BH_FREE(wasm_file_path); - return *p_buffer != NULL; -} - -void -destroyer(uint8 *buffer, uint32 size) -{ - if (!buffer) { - return; - } - - BH_FREE(buffer); - buffer = NULL; -} |