compiling wineserver under cygwin - thread context

David Fraser davidf at sjsoft.com
Thu Nov 28 09:51:08 CST 2002


Dimitrie O. Paun wrote:

>On November 28, 2002 09:51 am, David Fraser wrote:
>  
>
>>So part of the question is, in order to get Wine to function properly on
>>Cygwin, what is the right
>>threading approach to take? Am I right in thinking that the current code
>>wouldn't work on Cygwin?
>>    
>>
>
>I say, let's get the compiling and linking working, and then worry about
>actually running it... :)
>
>  
>
>>As far as I can see the only places get_thread_context and 
>>set_thread_context are used is in
>>scheduler/thread.c, to implement WINAPI GetThreadContext and 
>>SetThreadContext
>>    
>>
>
>So actually a first approximation for [sg]et_thread_context for
>Cygwin would be one that does nothing. Then we can try submitting
>patches to Cygwin (Approach 2), so that other apps can make use
>of ptrace, if necessary.
>
>  
>
OK, done that. So now wineserver.exe actually links :-) And it runs too!
However can't yet see whether its going to do anything as in order to 
actually run programs
it looks like we need tolink miscemu/main.c
Problem here being that it wants to link with ntdll, which doesn't build 
yet.
That still needs a lot more work... In the mean time a very simple patch 
that
does nothing for context_i386.c is below in case anyone else wants to try...
David

Index: server/context_i386.c
===================================================================
RCS file: /home/wine/wine/server/context_i386.c,v
retrieving revision 1.24
diff -u -r1.24 context_i386.c
--- server/context_i386.c       8 Nov 2002 18:55:31 -0000       1.24
+++ server/context_i386.c       28 Nov 2002 15:48:01 -0000
@@ -76,7 +76,24 @@
 #define PTRACE_SETDBREGS PT_SETDBREGS
 #endif

-#ifdef linux
+#if defined(__CYGWIN__)
+
+/* retrieve a thread context */
+static void get_thread_context( struct thread *thread, unsigned int 
flags, CONTEXT *context )
+{
+    /* FIXME: implement this */
+    file_set_error();
+}
+
+
+/* set a thread context */
+static void set_thread_context( struct thread *thread, unsigned int 
flags, const CONTEXT *context )
+{
+    /* FIXME: implement this */
+    file_set_error();
+}
+
+#elif defined(linux)
 #ifdef HAVE_SYS_USER_H
 # include <sys/user.h>
 #endif





More information about the wine-devel mailing list