From 5c2a28173a344a185aa301739531e5d239ba7ae6 Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Mon, 24 Aug 2009 20:59:05 +0100 Subject: [PATCH] Start windows factor in a spawned thread (for testing) --- vm/factor.cpp | 7 ++++--- vm/factor.hpp | 2 +- vm/main-windows-nt.cpp | 2 ++ vm/os-windows-nt.cpp | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/vm/factor.cpp b/vm/factor.cpp index 6e31a02cab..bb30aae7ee 100755 --- a/vm/factor.cpp +++ b/vm/factor.cpp @@ -212,7 +212,7 @@ void factorvm::factor_sleep(long us) void factorvm::start_standalone_factor(int argc, vm_char **argv) { - printf("thread id is %d\n",GetCurrentThreadId());fflush(stdout); + //printf("thread id is %d\n",GetCurrentThreadId());fflush(stdout); register_vm(GetCurrentThreadId(),this); vm_parameters p; default_parameters(&p); @@ -243,11 +243,12 @@ VM_C_API void start_standalone_factor(int argc, vm_char **argv) return newvm->start_standalone_factor(argc,argv); } -VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv) +VM_C_API void *start_standalone_factor_in_new_thread(int argc, vm_char **argv) { startargs *args = new startargs; // leaks startargs structure args->argc = argc; args->argv = argv; - start_thread(start_standalone_factor_thread,args); + void *handle = start_thread(start_standalone_factor_thread,args); + return handle; } } diff --git a/vm/factor.hpp b/vm/factor.hpp index 5c5b92dff2..fbd6873c28 100644 --- a/vm/factor.hpp +++ b/vm/factor.hpp @@ -2,6 +2,6 @@ namespace factor { VM_C_API void start_standalone_factor(int argc, vm_char **argv); -VM_C_API void start_standalone_factor_in_new_thread(int argc, vm_char **argv); +VM_C_API void *start_standalone_factor_in_new_thread(int argc, vm_char **argv); } diff --git a/vm/main-windows-nt.cpp b/vm/main-windows-nt.cpp index eaaad0f55b..4a0fc2ae35 100644 --- a/vm/main-windows-nt.cpp +++ b/vm/main-windows-nt.cpp @@ -17,6 +17,8 @@ int WINAPI WinMain( } factor::start_standalone_factor(nArgs,szArglist); + //HANDLE thread = factor::start_standalone_factor_in_new_thread(nArgs,szArglist); + //WaitForSingleObject(thread, INFINITE); LocalFree(szArglist); diff --git a/vm/os-windows-nt.cpp b/vm/os-windows-nt.cpp index a4cdbc66af..b212287e5f 100755 --- a/vm/os-windows-nt.cpp +++ b/vm/os-windows-nt.cpp @@ -18,7 +18,7 @@ s64 factorvm::current_micros() FACTOR_STDCALL LONG exception_handler(PEXCEPTION_POINTERS pe) { - printf("exception handler %d\n",GetCurrentThreadId()); + //printf("exception handler %d\n",GetCurrentThreadId());fflush(stdout); factorvm *myvm = lookup_vm(GetCurrentThreadId()); PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord; CONTEXT *c = (CONTEXT*)pe->ContextRecord; -- 2.34.1