From 577e48e540b3a02a5dd1f24a04b985e31a20ec48 Mon Sep 17 00:00:00 2001
From: burlex
Date: Wed, 13 Jun 2007 20:58:51 +0000
Subject: * Fixed IOCPEngine under x64 (because of incorrect pointer sizes) -
Fixed configure / VC8 projects for x64 compiling.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7293 e03df62e-2008-0410-955e-edbf42e46eb7
---
src/socketengine_iocp.cpp | 13 ++++++-----
win/configure.cpp | 12 +++++-----
win/configureVC80.vcproj | 40 ++++++++++++++++-----------------
win/inspircdVC80.vcproj | 52 +++++++++++++++++++++----------------------
win/m_spanningtreeVC80.vcproj | 48 +++++++++++++++++++--------------------
5 files changed, 84 insertions(+), 81 deletions(-)
diff --git a/src/socketengine_iocp.cpp b/src/socketengine_iocp.cpp
index 58ce36177..82462f8b9 100644
--- a/src/socketengine_iocp.cpp
+++ b/src/socketengine_iocp.cpp
@@ -46,8 +46,9 @@ bool IOCPEngine::AddFd(EventHandler* eh)
eh->m_writeEvent = 0;
eh->m_acceptEvent = 0;
+ unsigned long completion_key = (ULONG_PTR)eh->m_internalFd;
/* assign the socket to the completion port */
- if(!CreateIoCompletionPort((HANDLE)eh->GetFd(), m_completionPort, (ULONG_PTR)eh->m_internalFd, 0))
+ if(!CreateIoCompletionPort((HANDLE)eh->GetFd(), m_completionPort, completion_key, 0))
return false;
/* set up binding, increase set size */
@@ -124,16 +125,18 @@ void IOCPEngine::WantWrite(EventHandler* eh)
/* Post event - write begin */
if(!eh->m_writeEvent)
{
+ ULONG_PTR completion_key = (ULONG_PTR)eh->m_internalFd;
Overlapped * ov = new Overlapped(SOCKET_IO_EVENT_WRITE_READY, 0);
eh->m_writeEvent = (void*)ov;
- PostQueuedCompletionStatus(m_completionPort, 0, (ULONG_PTR)eh->m_internalFd, &ov->m_overlap);
+ PostQueuedCompletionStatus(m_completionPort, 0, completion_key, &ov->m_overlap);
}
}
bool IOCPEngine::PostCompletionEvent(EventHandler * eh, SocketIOEvent type, int param)
{
Overlapped * ov = new Overlapped(type, param);
- return PostQueuedCompletionStatus(m_completionPort, 0, (ULONG_PTR)eh->m_internalFd, &ov->m_overlap);
+ ULONG_PTR completion_key = (ULONG_PTR)eh->m_internalFd;
+ return PostQueuedCompletionStatus(m_completionPort, 0, completion_key, &ov->m_overlap);
}
void IOCPEngine::PostReadEvent(EventHandler * eh)
@@ -206,11 +209,11 @@ int IOCPEngine::DispatchEvents()
LPOVERLAPPED overlap;
Overlapped * ov;
EventHandler * eh;
- int intfd;
+ ULONG_PTR intfd;
int ret;
unsigned long bytes_recv;
- while(GetQueuedCompletionStatus(m_completionPort, &len, (PULONG_PTR)&intfd, &overlap, 1000))
+ while(GetQueuedCompletionStatus(m_completionPort, &len, &intfd, &overlap, 1000))
{
// woot, we got an event on a socket :P
eh = ref[intfd];
diff --git a/win/configure.cpp b/win/configure.cpp
index debd659b8..6f0396bae 100644
--- a/win/configure.cpp
+++ b/win/configure.cpp
@@ -405,13 +405,13 @@ void WriteCompileCommands()
#ifdef WIN64
// /MACHINE:X64
#ifdef _DEBUG
- fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../include\" /I \"../include/modes\" /I \"../include/commands\" /I \"../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /Gm /RTC1 /MTd /Fo\"Debug/\" /Fd\"Debug/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\win\\inspircd_memory_functions.cpp /link ..\\bin\\debug\\bin\\inspircd.lib /OUT:\"..\\bin\\debug\\lib\\$*.so\" /PDB:\"..\\bin\\debug\\lib\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\bin\\debug\\lib\\$*.lib\"\n\n");
+ fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../include\" /I \"../include/modes\" /I \"../include/commands\" /I \"../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /Gm /RTC1 /MTd /Fo\"Debug/\" /Fd\"Debug/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\win\\inspircd_memory_functions.cpp /link ..\\bin\\debug_x64\\bin\\inspircd.lib /OUT:\"..\\bin\\debug_x64\\lib\\$*.so\" /PDB:\"..\\bin\\debug_x64\\lib\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\bin\\debug_x64\\lib\\$*.lib\"\n\n");
CreateDirectory("..\\src\\debug", NULL);
CreateDirectory("..\\bin\\debug\\bin", NULL);
CreateDirectory("..\\bin\\debug\\lib", NULL);
CreateDirectory("..\\bin\\debug\\modules", NULL);
#else
- fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../include\" /I \"../include/modes\" /I \"../include/commands\" /I \"../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /EHsc /Gm /MT /Fo\"Release/\" /Fd\"Release/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\win\\inspircd_memory_functions.cpp /link ..\\bin\\release\\bin\\inspircd.lib /OUT:\"..\\bin\\release\\lib\\$*.so\" /PDB:\"..\\bin\\release\\lib\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\bin\\release\\lib\\$*.lib\"\n\n");
+ fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../include\" /I \"../include/modes\" /I \"../include/commands\" /I \"../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /EHsc /Gm /MT /Fo\"Release/\" /Fd\"Release/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\win\\inspircd_memory_functions.cpp /link ..\\bin\\release_x64\\bin\\inspircd.lib /OUT:\"..\\bin\\release_x64\\lib\\$*.so\" /PDB:\"..\\bin\\release_x64\\lib\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\bin\\release_x64\\lib\\$*.lib\"\n\n");
CreateDirectory("..\\src\\release", NULL);
CreateDirectory("..\\bin\\release\\bin", NULL);
CreateDirectory("..\\bin\\release\\lib", NULL);
@@ -482,11 +482,11 @@ void WriteCompileModules()
#ifdef WIN64
// /MACHINE:X64
#ifdef _DEBUG
- fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /Gm /RTC1 /MTd /Fo\"Debug/\" /Fd\"Debug/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\debug\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug\\modules\\$*.lib\"\n\n");
- CreateDirectory("..\\src\\modules\\debug", NULL);
+ fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_DEBUG\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /Gm /EHsc /Gm /RTC1 /MTd /Fo\"Debug/\" /Fd\"Debug/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\debug_x64\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\debug_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\debug_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\debug_x64\\modules\\$*.lib\"\n\n");
+ CreateDirectory("..\\src\\modules\\debug_x64", NULL);
#else
- fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /EHsc /Gm /MT /Fo\"Release/\" /Fd\"Release/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release\\modules\\$*.lib\"\n\n");
- CreateDirectory("..\\src\\modules\\release", NULL);
+ fprintf(f, " cl /nologo /LD /Od /I \".\" /I \"../../include\" /I \"../../include/modes\" /I \"../../include/modules\" /I \"../../win\" /D \"WIN32\" /D \"_CONSOLE\" /D \"_MBCS\" /D \"DLL_BUILD\" /EHsc /Gm /MT /Fo\"Release/\" /Fd\"Release/vc70.pdb\" /W2 /Wp64 /Zi /TP $*.cpp ..\\..\\win\\inspircd_memory_functions.cpp /link ..\\..\\bin\\release_x64\\bin\\inspircd.lib ws2_32.lib /OUT:\"..\\..\\bin\\release_x64\\modules\\$*.so\" /PDB:\"..\\..\\bin\\release_x64\\modules\\$*.pdb\" /MACHINE:X64 /IMPLIB:\"..\\..\\bin\\release_x64\\modules\\$*.lib\"\n\n");
+ CreateDirectory("..\\src\\modules\\release_x64", NULL);
#endif
#else
#ifdef _DEBUG
diff --git a/win/configureVC80.vcproj b/win/configureVC80.vcproj
index 23cbac5c2..b16492523 100644
--- a/win/configureVC80.vcproj
+++ b/win/configureVC80.vcproj
@@ -97,9 +97,9 @@
/>
@@ -149,13 +151,12 @@
AdditionalDependencies="ws2_32.lib inspircd.lib cmd_whois.lib cmd_stats.lib"
OutputFile="$(OutDir)/m_spanningtree.so"
LinkIncremental="1"
- AdditionalLibraryDirectories="..\bin\release\bin;..\bin\release\lib"
+ AdditionalLibraryDirectories="..\bin\debug_x64\bin;..\bin\debug_x64\lib"
GenerateDebugInformation="true"
+ ProgramDatabaseFile="$(OutDir)/m_spanningtree.pdb"
SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
ImportLibrary="$(OutDir)/m_spanningtree.lib"
- TargetMachine="1"
+ TargetMachine="17"
/>
@@ -233,12 +232,13 @@
AdditionalDependencies="ws2_32.lib inspircd.lib cmd_whois.lib cmd_stats.lib"
OutputFile="$(OutDir)/m_spanningtree.so"
LinkIncremental="1"
- AdditionalLibraryDirectories="..\bin\debug\bin;..\bin\debug\lib"
+ AdditionalLibraryDirectories="..\bin\release\bin;..\bin\release\lib"
GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/m_spanningtree.pdb"
SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
ImportLibrary="$(OutDir)/m_spanningtree.lib"
- TargetMachine="17"
+ TargetMachine="1"
/>