|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/LIBWAMR PATCH v2 4/5] Add patches
Add various patches to (a) make wamr build against pthread-embedded,
(b) use wasm's log and (c) patch into wamr's linux's main loop.
Signed-off-by: Felipe Huici <felipe.huici@xxxxxxxxx>
---
...-fix-pthread-embedded-pthread-t-type.patch | 15 +++
...-fix-pthread-embedded-pthread-t-type.patch | 16 +++
...thread-use-wasm-log-insteadof-bh-log.patch | 11 ++
patches/0004-add-math-h.patch | 11 ++
patches/0005-adapt-main-c-to-unikraft.patch | 104 ++++++++++++++++++
5 files changed, 157 insertions(+)
create mode 100644
patches/0001-wasm-log-fix-pthread-embedded-pthread-t-type.patch
create mode 100644
patches/0002-bh-thread-fix-pthread-embedded-pthread-t-type.patch
create mode 100644 patches/0003-bh-thread-use-wasm-log-insteadof-bh-log.patch
create mode 100644 patches/0004-add-math-h.patch
create mode 100644 patches/0005-adapt-main-c-to-unikraft.patch
diff --git a/patches/0001-wasm-log-fix-pthread-embedded-pthread-t-type.patch
b/patches/0001-wasm-log-fix-pthread-embedded-pthread-t-type.patch
new file mode 100644
index 0000000..8630539
--- /dev/null
+++ b/patches/0001-wasm-log-fix-pthread-embedded-pthread-t-type.patch
@@ -0,0 +1,15 @@
+--- /core/iwasm/runtime/utils/wasm_log.c.orig 2019-07-30 10:01:46.715217329
+0200
++++ /core/iwasm/runtime/utils/wasm_log.c 2019-07-30 10:07:26.891746359
+0200
+@@ -57,8 +57,11 @@
+ /* Try to own the log stream and start the log output. */
+ ws_mutex_lock (&log_stream_lock);
+ self = ws_self_thread ();
++#ifdef CONFIG_LIBPTHREAD_EMBEDDED
++ wasm_printf ("[%X]: ", (int)self.p);
++#else
+ wasm_printf ("[%X]: ", (int)self);
+-
++#endif
+ return true;
+ }
+
diff --git a/patches/0002-bh-thread-fix-pthread-embedded-pthread-t-type.patch
b/patches/0002-bh-thread-fix-pthread-embedded-pthread-t-type.patch
new file mode 100644
index 0000000..7101ce2
--- /dev/null
+++ b/patches/0002-bh-thread-fix-pthread-embedded-pthread-t-type.patch
@@ -0,0 +1,16 @@
+--- /core/shared-lib/platform/linux/bh_thread.c.orig 2019-07-30
10:08:21.243191688 +0200
++++ /core/shared-lib/platform/linux/bh_thread.c 2019-07-30
10:08:55.110846278 +0200
+@@ -93,8 +93,12 @@
+ bh_assert(tid);
+ bh_assert(start);
+
++#ifdef CONFIG_LIBPTHREAD_EMBEDDED
++ tid->p = INVALID_THREAD_ID;
++#else
+ *tid = INVALID_THREAD_ID;
+-
++#endif
++
+ pthread_attr_init(&tattr);
+ pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_JOINABLE);
+ if (pthread_attr_setstacksize(&tattr, stack_size) != 0) {
diff --git a/patches/0003-bh-thread-use-wasm-log-insteadof-bh-log.patch
b/patches/0003-bh-thread-use-wasm-log-insteadof-bh-log.patch
new file mode 100644
index 0000000..6a5e923
--- /dev/null
+++ b/patches/0003-bh-thread-use-wasm-log-insteadof-bh-log.patch
@@ -0,0 +1,11 @@
+--- /core/shared-lib/platform/linux/bh_thread.c.orig 2019-07-30
11:10:57.884821508 +0200
++++ /core/shared-lib/platform/linux/bh_thread.c 2019-07-30
11:11:54.492244787 +0200
+@@ -16,7 +16,7 @@
+
+ #include "bh_thread.h"
+ #include "bh_assert.h"
+-#include "bh_log.h"
++#include "wasm_log.h"
+ #include "bh_memory.h"
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/patches/0004-add-math-h.patch b/patches/0004-add-math-h.patch
new file mode 100644
index 0000000..4a01bbc
--- /dev/null
+++ b/patches/0004-add-math-h.patch
@@ -0,0 +1,11 @@
+--- a/core/iwasm/runtime/vmcore-wasm/wasm_interp.c 2019-10-04
19:29:40.818609262 +0200
++++ b/core/iwasm/runtime/vmcore-wasm/wasm_interp.c 2019-10-04
19:29:52.050488455 +0200
+@@ -22,6 +22,8 @@
+ #include "wasm_log.h"
+ #include "wasm_memory.h"
+
++#include <math.h>
++
+ typedef int32 CellType_I32;
+ typedef int64 CellType_I64;
+ typedef float32 CellType_F32;
diff --git a/patches/0005-adapt-main-c-to-unikraft.patch
b/patches/0005-adapt-main-c-to-unikraft.patch
new file mode 100644
index 0000000..708f0a9
--- /dev/null
+++ b/patches/0005-adapt-main-c-to-unikraft.patch
@@ -0,0 +1,104 @@
+--- a/core/iwasm/products/linux/main.c 2019-10-07 19:35:28.380068497 +0200
++++ b/core/iwasm/products/linux/main.c 2019-10-07 19:35:09.900277642 +0200
+@@ -28,6 +28,8 @@
+ #include "wasm_memory.h"
+ #include "bh_memory.h"
+
++#include <uk/plat/memory.h>
++
+ static int app_argc;
+ static char **app_argv;
+
+@@ -158,7 +160,7 @@
+ return NULL;
+ }
+
+-#define USE_GLOBAL_HEAP_BUF 0
++#define USE_GLOBAL_HEAP_BUF 1
+
+ #if USE_GLOBAL_HEAP_BUF != 0
+ static char global_heap_buf[10 * 1024 * 1024] = { 0 };
+@@ -182,10 +184,6 @@
+ for (argc--, argv++; argc > 0 && argv[0][0] == '-'; argc--, argv++) {
+ if (!strcmp(argv[0], "-f") || !strcmp(argv[0], "--function")) {
+ argc--, argv++;
+- if (argc < 2) {
+- print_help();
+- return 0;
+- }
+ func_name = argv[0];
+ }
+ #if WASM_ENABLE_LOG != 0
+@@ -197,13 +195,8 @@
+ #endif
+ else if (!strcmp(argv[0], "--repl"))
+ is_repl_mode = true;
+- else
+- return print_help();
+ }
+
+- if (argc == 0)
+- return print_help();
+-
+ wasm_file = argv[0];
+ app_argc = argc;
+ app_argv = argv;
+@@ -227,30 +220,35 @@
+
+ wasm_log_set_verbose_level(log_verbose_level);
+
+- /* load WASM byte buffer from WASM bin file */
+- if (!(wasm_file_buf = (uint8*) bh_read_file_to_buffer(wasm_file,
+- &wasm_file_size)))
+- goto fail2;
+-
+- /* load WASM module */
+- if (!(wasm_module = wasm_runtime_load(wasm_file_buf, wasm_file_size,
+- error_buf, sizeof(error_buf)))) {
+- wasm_printf("%s\n", error_buf);
+- goto fail3;
+- }
+-
+- /* instantiate the module */
+- if (!(wasm_module_inst = wasm_runtime_instantiate(wasm_module,
+- 64 * 1024, /* stack
size */
+- 64 * 1024, /* heap size
*/
+- error_buf,
+- sizeof(error_buf)))) {
+- wasm_printf("%s\n", error_buf);
+- goto fail4;
++ /* load from initrd */
++ struct ukplat_memregion_desc img;
++ if (ukplat_memregion_find_initrd0(&img) >= 0) {
++ wasm_file_buf = (uint8*)img.base;
++ wasm_file_size = img.len;
++
++ /* load WASM module */
++ if (!(wasm_module = wasm_runtime_load(wasm_file_buf, wasm_file_size,
++ error_buf, sizeof(error_buf)))) {
++ wasm_printf("%s\n", error_buf);
++ goto fail3;
++ }
++
++ /* instantiate the module */
++ if (!(wasm_module_inst = wasm_runtime_instantiate(wasm_module,
++ 64 * 1024, /* stack
size */
++ 64 * 1024, /* heap
size */
++ error_buf,
++ sizeof(error_buf)))) {
++ wasm_printf("%s\n", error_buf);
++ goto fail4;
++ }
++ }
++ else goto fail3;
++
++ if (is_repl_mode) {
++ printf("Entering REPL mode...\n");
++ app_instance_repl(wasm_module_inst);
+ }
+-
+- if (is_repl_mode)
+- app_instance_repl(wasm_module_inst);
+ else if (func_name)
+ app_instance_func(wasm_module_inst, func_name);
+ else
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |