Prechádzať zdrojové kódy

Add vprintf override for android and esp-idf (#3174)

And update document.
Enrico Loparco 1 rok pred
rodič
commit
8493ffa1cc

+ 10 - 2
core/shared/platform/android/platform_init.c

@@ -24,11 +24,15 @@ bh_platform_destroy()
 int
 os_printf(const char *fmt, ...)
 {
-    int ret;
+    int ret = 0;
     va_list ap;
 
     va_start(ap, fmt);
-    ret = __android_log_vprint(ANDROID_LOG_INFO, "wasm_runtime::", fmt, ap);
+#ifndef BH_VPRINTF
+    ret += __android_log_vprint(ANDROID_LOG_INFO, "wasm_runtime::", fmt, ap);
+#else
+    ret += BH_VPRINTF(fmt, ap);
+#endif
     va_end(ap);
 
     return ret;
@@ -37,7 +41,11 @@ os_printf(const char *fmt, ...)
 int
 os_vprintf(const char *fmt, va_list ap)
 {
+#ifndef BH_VPRINTF
     return __android_log_vprint(ANDROID_LOG_INFO, "wasm_runtime::", fmt, ap);
+#else
+    return BH_VPRINTF(fmt, ap);
+#endif
 }
 
 #if __ANDROID_API__ < 19

+ 8 - 0
core/shared/platform/esp-idf/espidf_platform.c

@@ -23,7 +23,11 @@ os_printf(const char *format, ...)
     va_list ap;
 
     va_start(ap, format);
+#ifndef BH_VPRINTF
     ret += vprintf(format, ap);
+#else
+    ret += BH_VPRINTF(format, ap);
+#endif
     va_end(ap);
 
     return ret;
@@ -32,7 +36,11 @@ os_printf(const char *format, ...)
 int
 os_vprintf(const char *format, va_list ap)
 {
+#ifndef BH_VPRINTF
     return vprintf(format, ap);
+#else
+    return BH_VPRINTF(format, ap);
+#endif
 }
 
 uint64

+ 1 - 1
doc/build_wamr.md

@@ -176,7 +176,7 @@ Currently we only profile the memory consumption of module, module_instance and
 
 #### **Set vprintf callback**
 - **WAMR_BH_VPRINTF**=<vprintf_callback>, default to disable if not set
-> Note: if the vprintf_callback function is provided by developer, the os_printf() and os_vprintf() in Linux, Darwin, Windows and VxWorks platforms, besides WASI Libc output will call the callback function instead of libc vprintf() function to redirect the stdout output. For example, developer can define the callback function like below outside runtime lib:
+> Note: if the vprintf_callback function is provided by developer, the os_printf() and os_vprintf() in Linux, Darwin, Windows, VxWorks, Android and esp-idf platforms, besides WASI Libc output will call the callback function instead of libc vprintf() function to redirect the stdout output. For example, developer can define the callback function like below outside runtime lib:
 >
 > ```C
 > int my_vprintf(const char *format, va_list ap)