Yes we can.

What is the value of INFINITE? 0xffffffff?

Thasks
Tzachi

From: Fab Tillier [mailto:[email protected]]
Sent: Sunday, September 19, 2010 8:24 PM
To: Tzachi Dar; [email protected]; Sean Hefty
Subject: RE: patch: [complib] Allow the timer to work with windows 2003

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

From: [email protected] 
[mailto:[email protected]] On Behalf Of Tzachi Dar
Sent: Sunday, September 19, 2010 5:20 AM
To: Tzachi Dar; [email protected]; 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; [email protected]; Sean Hefty
Cc: Uri Habusha
Subject: RE: patch: [complib] Allow the timer to work with windows 2003



From: Tzachi Dar [mailto:[email protected]]
Sent: Tuesday, September 07, 2010 7:02 PM
To: [email protected]; 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;
}
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to