Patch: wait-debug.diff (10 in series)

Martin Wilck Martin.Wilck at fujitsu-siemens.com
Fri Apr 12 10:24:59 CDT 2002


Patch:  wait-debug.diff

Introduce a debug channel for WaitForMultipleObjectsEx() in scheduler/synchro.c -
I found this very useful to debug my asynchronous socket code.

Moreover, include "async.h" _after_ declaring debug channels so that
TRACEs can be used in the static functions in async.h.

Patch against:
        CVS 2002-04-12, with my async-immediate, async-file patches applied.

Modified files:
        dlls/kernel:    comm.c
        dlls/ntdll:     ntdll.spec
        files:          file.c
        include:        async.h
        scheduler:      synchro.c

diff -ruNX ignore TMP/wine/dlls/kernel/comm.c MW/wine/dlls/kernel/comm.c
--- TMP/wine/dlls/kernel/comm.c	Fri Apr 12 12:31:58 2002
+++ MW/wine/dlls/kernel/comm.c	Fri Apr 12 12:32:19 2002
@@ -80,7 +80,6 @@
 #include "winerror.h"

 #include "wine/server.h"
-#include "async.h"
 #include "file.h"
 #include "heap.h"

@@ -91,6 +90,7 @@
 #endif

 WINE_DEFAULT_DEBUG_CHANNEL(comm);
+#include "async.h"

 /***********************************************************************
  * Asynchronous I/O for asynchronous wait requests                     *
diff -ruNX ignore TMP/wine/dlls/ntdll/ntdll.spec MW/wine/dlls/ntdll/ntdll.spec
--- TMP/wine/dlls/ntdll/ntdll.spec	Tue Apr  2 16:51:27 2002
+++ MW/wine/dlls/ntdll/ntdll.spec	Fri Apr 12 12:33:12 2002
@@ -5,7 +5,7 @@
                 global heap int int21 int31 io loaddll local module ntdll process
                 profile reg relay resource segment seh selector server snoop
                 string system tape task thread tid timer toolhelp ver virtual
-                vxd win32)
+                vxd wait win32)

 #note that the Zw... functions are alternate names for the
 #Nt... functions.  (see www.sysinternals.com for details)
diff -ruNX ignore TMP/wine/files/file.c MW/wine/files/file.c
--- TMP/wine/files/file.c	Fri Apr 12 12:31:58 2002
+++ MW/wine/files/file.c	Fri Apr 12 12:32:19 2002
@@ -55,7 +55,6 @@

 #include "drive.h"
 #include "file.h"
-#include "async.h"
 #include "heap.h"
 #include "msdos.h"
 #include "wincon.h"
@@ -64,6 +63,7 @@
 #include "wine/debug.h"

 WINE_DEFAULT_DEBUG_CHANNEL(file);
+#include "async.h"

 #if defined(MAP_ANONYMOUS) && !defined(MAP_ANON)
 #define MAP_ANON MAP_ANONYMOUS
diff -ruNX ignore TMP/wine/include/async.h MW/wine/include/async.h
--- TMP/wine/include/async.h	Fri Apr 12 12:31:58 2002
+++ MW/wine/include/async.h	Fri Apr 12 12:32:19 2002
@@ -102,6 +102,7 @@
         ovp->ops->set_status ( ovp, ret );
     }

+    TRACE ("ovp %p, status %lx %lx, ret %x\n", ovp, status, ovp->ops->get_status (ovp), ret);
     if ( ovp->ops->get_status (ovp) != STATUS_PENDING )
         finish_async (ovp);

diff -ruNX ignore TMP/wine/scheduler/synchro.c MW/wine/scheduler/synchro.c
--- TMP/wine/scheduler/synchro.c	Mon Apr  8 10:56:59 2002
+++ MW/wine/scheduler/synchro.c	Fri Apr 12 12:33:12 2002
@@ -23,6 +23,7 @@
 #include <signal.h>
 #include <sys/time.h>
 #include <sys/poll.h>
+#include <stdio.h>
 #include <unistd.h>
 #include <string.h>

@@ -30,6 +31,9 @@
 #include "thread.h"
 #include "winerror.h"
 #include "wine/server.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(wait);
 #include "async.h"


@@ -225,9 +229,22 @@
                                        BOOL wait_all, DWORD timeout,
                                        BOOL alertable )
 {
-    int ret, cookie;
+    int ret, cookie,i;
     struct timeval tv;

+    if ( TRACE_ON ( __default ) )
+    {
+        const int len = 256;
+        char bf[len], *pp;
+
+        for (i = 0, pp = bf; i < count && pp < bf+len; i++)
+            pp += snprintf (pp, bf + len - pp, " %d", handles[i]);
+        bf[len-1] = 0;
+
+        TRACE ( "n=%ld wait=%c timeout=%ld alertable=%c handles%s\n", count,
+                ( wait_all ? 'y' : 'n' ), timeout, ( alertable ? 'y' : 'n' ), bf );
+    }
+
     if (count > MAXIMUM_WAIT_OBJECTS)
     {
         SetLastError( ERROR_INVALID_PARAMETER );
@@ -259,6 +276,7 @@
         call_apcs( alertable );
         if (alertable) break;
     }
+    TRACE ("status: %d\n", ret);
     if (HIWORD(ret))  /* is it an error code? */
     {
         SetLastError( RtlNtStatusToDosError(ret) );







More information about the wine-devel mailing list