Commit 492ec627 authored by Mikael Ronstrom's avatar Mikael Ronstrom

First attempt at fixing Windows issues in 5.4.0

parent 4557f4ee
......@@ -25,24 +25,30 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
PROPERTIES COMPILE_FLAGS -Od)
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_SIZEOF_VOID_P MATCHES 8)
MESSAGE("Checking for ATOMICS")
IF (NOT WITHOUT_ATOMICS)
# Check if this Windows version supports atomic instructions
IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
# Check for 64 bit atomics
TRY_RUN(RUN_RES COMPILE_RES ${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/storage/innobase/win_atomics64_test.c)
IF (RUN_RES)
MESSAGE("Tried Win64, Compile = ${COMPILE_RES}, Run = ${RUN_RES}")
IF (COMPILE_RES AND NOT RUN_RES)
MESSAGE("Adding support for Win64 atomics")
ADD_DEFINITIONS(-DWIN_ATOMICS64)
ENDIF (RUN_RES)
ENDIF (COMPILE_RES AND NOT RUN_RES)
ELSE (CMAKE_SIZEOF_VOID_P MATCHES 8)
# Check for 32 bit atomics
TRY_RUN(RUN_RES COMPILE_RES ${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/storage/innobase/win_atomics32_test.c)
IF (RUN_RES)
MESSAGE("Tried Win32, Compile = ${COMPILE_RES}, Run = ${RUN_RES}")
IF (COMPILE_RES AND NOT RUN_RES)
MESSAGE("Adding support for Win32 atomics")
ADD_DEFINITIONS(-DWIN_ATOMICS32)
ENDIF (RUN_RES)
ENDIF (COMPILE_RES AND NOT RUN_RES)
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
ENDIF (NOT WITHOUT_ATOMICS)
MESSAGE("End checking for ATOMICS")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
${CMAKE_SOURCE_DIR}/storage/innobase/include
......
......@@ -142,9 +142,9 @@ os_atomic_increment(
#elif HAVE_SOLARIS_ATOMIC
return ((lint)atomic_add_long_nv((volatile ulong_t *)ptr, amount));
#elif WIN_ATOMICS32
return ((lint)InterlockedExchangeAdd(ptr, amount));
return ((lint)InterlockedExchangeAdd(ptr, amount) + amount);
#elif WIN_ATOMICS64
return ((lint)InterlockedExchangeAdd64(ptr, amount));
return ((lint)InterlockedExchangeAdd64(ptr, amount) + amount);
#else
#error "Need support for atomic ops"
#endif
......
# Copyright (C) 2009 Sun Microsystems AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
/* Copyright (C) 2009 Sun Microsystems AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include <windows.h>
......
# Copyright (C) 2009 Sun Microsystems AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
/* Copyright (C) 2009 Sun Microsystems AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include <windows.h>
int main()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment