[ofw] patch: [complib] Allow the timer to work with windows 2003

Fab Tillier ftillier at microsoft.com
Sun Sep 19 11:23:41 PDT 2010


Can we make the FFFFFFFE define only happen on Windows Server 2003, and use the INFINITE value for the newer operating systems?

From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Tzachi Dar
Sent: Sunday, September 19, 2010 5:20 AM
To: Tzachi Dar; ofw at lists.openfabrics.org; Sean Hefty
Subject: Re: [ofw] patch: [complib] Allow the timer to work with windows 2003

Applied on 2934.

Thanks
Tzachi

From: Tzachi Dar
Sent: Saturday, September 11, 2010 10:31 PM
To: Tzachi Dar; ofw at lists.openfabrics.org; Sean Hefty
Cc: Uri Habusha
Subject: RE: patch: [complib] Allow the timer to work with windows 2003



From: Tzachi Dar [mailto:tzachid at mellanox.co.il]
Sent: Tuesday, September 07, 2010 7:02 PM
To: ofw at lists.openfabrics.org; Sean Hefty
Cc: Uri Habusha
Subject: patch: [complib] Allow the timer to work with windows 2003

It seems that windows 2003 timer does not work with a period of 0xffffffff. The workaround is to use the constant 0xfffffffe instead.

Index: B:/users/tzachid/MLNX_WinOF-2_1_2/core/complib/user/cl_timer.c
===================================================================
--- B:/users/tzachid/MLNX_WinOF-2_1_2/core/complib/user/cl_timer.c              (revision 6479)
+++ B:/users/tzachid/MLNX_WinOF-2_1_2/core/complib/user/cl_timer.c           (revision 6480)
@@ -34,7 +34,8 @@
 #include "complib/cl_timer.h"


-#define CL_MAX_TIME 0xFFFFFFFF
+// Using FFFFFFFF will not work on windows 2003
+#define CL_MAX_TIME 0xFFFFFFFE


 /*

In order to verify us, you can try running the following program on 2003 and on 2008.

Thanks
Tzachi and xalex



#include <windows.h>
#include <stdio.h>

HANDLE hTimer = NULL;
HANDLE hTimerQueue = NULL;
int arg = 123;
#define CL_MAX_TIME 0xFFFFFFFE

VOID CALLBACK TimerRoutine(PVOID lpParam, BOOLEAN TimerOrWaitFired)
{

                printf("Rescheduling it again\n");
                if (!ChangeTimerQueueTimer( hTimerQueue , hTimer, 500,  CL_MAX_TIME)) {
                                printf("ChangeTimerQueueTimer failed (%d)\n", GetLastError());
                                return;
                }

                                printf("Exiting callback\n");

}

int main()
{

                // Create the timer queue.
                hTimerQueue = CreateTimerQueue();
                if (NULL == hTimerQueue)
                {
                                printf("CreateTimerQueue failed (%d)\n", GetLastError());
                                return 2;
                }


                                if (!CreateTimerQueueTimer( &hTimer, hTimerQueue ,
                                                                (WAITORTIMERCALLBACK)TimerRoutine, &arg , CL_MAX_TIME, CL_MAX_TIME , WT_EXECUTEINTIMERTHREAD))
                                {
                                                printf("CreateTimerQueueTimer failed (%d)\n", GetLastError());
                                                return ;//3;
                                }

                                if (!ChangeTimerQueueTimer( hTimerQueue , hTimer, 500,  CL_MAX_TIME)) {
                                                printf("ChangeTimerQueueTimer failed (%d)\n", GetLastError());
                                                return;
                                }



                SleepEx (100000,TRUE);

                printf("After sleep\n");

                return 0;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20100919/2207551c/attachment.html>


More information about the ofw mailing list