return daemon(nochdir, noclose);
}
+#ifdef CONFIG_MARU
+//TODO: temp
+#define JAR_SKINFILE_PATH "emulator-skin.jar"
+#define JAVA_EXEFILE_PATH "java"
+#define JAVA_EXEOPTION "-jar"
+#define MAX_COMMAND 512
+
+static int start_simple_client(char* msg) {
+ int ret = 0;
+ char cmd[MAX_COMMAND] = {0};
+
+ sprintf(cmd, "%s %s %s %s=\"%s\"", JAVA_EXEFILE_PATH, JAVA_EXEOPTION, JAR_SKINFILE_PATH, "simple.msg", msg);
+
+#ifdef __WIN32
+ ret = WinExec(cmd, SW_SHOW);
+#else
+ ret = system(cmd);
+#endif
+
+ return 1;
+}
+#endif
+
void *qemu_oom_check(void *ptr)
{
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate memory: %s\n", strerror(errno));
+
+#ifdef CONFIG_MARU
+ char _msg[] = "Failed to allocate memory in qemu";
+ start_simple_client(_msg);
+#endif
+
abort();
}
return ptr;
#include "trace.h"
#include "qemu_socket.h"
+#ifdef CONFIG_MARU
+//TODO: temp
+#define JAR_SKINFILE_PATH "emulator-skin.jar"
+#define JAVA_EXEFILE_PATH "java"
+#define JAVA_EXEOPTION "-jar"
+#define MAX_COMMAND 512
+
+static int start_simple_client(char* msg) {
+ int ret = 0;
+ char cmd[MAX_COMMAND] = {0};
+
+ sprintf(cmd, "%s %s %s %s=\"%s\"", JAVA_EXEFILE_PATH, JAVA_EXEOPTION, JAR_SKINFILE_PATH, "simple.msg", msg);
+
+#ifdef __WIN32
+ ret = WinExec(cmd, SW_SHOW);
+#else
+ ret = system(cmd);
+#endif
+
+ return 1;
+}
+#endif
+
void *qemu_oom_check(void *ptr)
{
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate memory: %lu\n", GetLastError());
+
+#ifdef CONFIG_MARU
+ char _msg[] = "Failed to allocate memory in qemu";
+ start_simple_client(_msg);
+#endif
+
abort();
}
return ptr;
}
//retrieves the termination status of the specified process
- GetExitCodeProcess(pi.hProcess, &dwRet);
+ if (GetExitCodeProcess(pi.hProcess, &dwRet) != 0) {
+ ERR("failed to GetExitCodeProcess, error %u\n", GetLastError());
+ }
INFO("child return value : %d\n", dwRet);
if (dwRet == -1) {
- //TODO:
+ //child process is terminated with some problem.
+ //so qemu process will terminate, too. immediately.
exit(1);
}
INFO("child return value : %d\n", ret);
if (ret == 0xff) {
- //TODO:
+ //child process is terminated with some problem.
+ //so qemu process will terminate, too. immediately.
exit(1);
}
}