Start windows factor in a spawned thread (for testing)
parent
41345583a5
commit
8008545b8e
|
@ -212,7 +212,7 @@ void factorvm::factor_sleep(long us)
|
||||||
|
|
||||||
void factorvm::start_standalone_factor(int argc, vm_char **argv)
|
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);
|
register_vm(GetCurrentThreadId(),this);
|
||||||
vm_parameters p;
|
vm_parameters p;
|
||||||
default_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);
|
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
|
startargs *args = new startargs; // leaks startargs structure
|
||||||
args->argc = argc; args->argv = argv;
|
args->argc = argc; args->argv = argv;
|
||||||
start_thread(start_standalone_factor_thread,args);
|
void *handle = start_thread(start_standalone_factor_thread,args);
|
||||||
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@ int WINAPI WinMain(
|
||||||
}
|
}
|
||||||
|
|
||||||
factor::start_standalone_factor(nArgs,szArglist);
|
factor::start_standalone_factor(nArgs,szArglist);
|
||||||
|
//HANDLE thread = factor::start_standalone_factor_in_new_thread(nArgs,szArglist);
|
||||||
|
//WaitForSingleObject(thread, INFINITE);
|
||||||
|
|
||||||
LocalFree(szArglist);
|
LocalFree(szArglist);
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ s64 factorvm::current_micros()
|
||||||
|
|
||||||
FACTOR_STDCALL LONG exception_handler(PEXCEPTION_POINTERS pe)
|
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());
|
factorvm *myvm = lookup_vm(GetCurrentThreadId());
|
||||||
PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord;
|
PEXCEPTION_RECORD e = (PEXCEPTION_RECORD)pe->ExceptionRecord;
|
||||||
CONTEXT *c = (CONTEXT*)pe->ContextRecord;
|
CONTEXT *c = (CONTEXT*)pe->ContextRecord;
|
||||||
|
|
Loading…
Reference in New Issue