WL#4983: Add Windows support for Google SMP patch in Server
Affects: Server-5.4
—
Status: Complete
MySQL 5.4.1: To improve MySQL Server scalability under Windows, update the Google SMP patches from the launchpad tree 5.1-patches maintained by Mark Callaghan, to work on Windows: http://code.google.com/p/google-mysql-tools/wiki/SmpPerformance
Applied to MySQL 5.4.1. Adapt the Google SMP patch so that scalability enhancements are also available on Windows. Original patch is a Community contribution; for details, follow the link to launchpad: http://code.google.com/p/google-mysql-tools/wiki/SmpPerformance and the MySQL 5.4.0 description: https://clustra.norway.sun.com/twiki/bin/view/DatabasesAtSun/MySQLServer51PPHome#Summit_v0_2_Features
=== modified file 'storage/innobase/CMakeLists.txt'
--- storage/innobase/CMakeLists.txt 2009-03-06 23:12:36 +0000
+++ storage/innobase/CMakeLists.txt 2009-06-17 17:16:49 +0000
@@ -31,16 +31,18 @@ IF (NOT WITHOUT_ATOMICS)
# 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)
+ 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)
+ 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)
====
=== modified file 'storage/innobase/include/os0sync.ic'
--- storage/innobase/include/os0sync.ic 2009-03-06 18:25:38 +0000
+++ storage/innobase/include/os0sync.ic 2009-06-16 13:16:15 +0000
@@ -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
====
=== modified file 'storage/innobase/win_atomics32_test.c'
--- storage/innobase/win_atomics32_test.c 2009-03-06 18:25:38 +0000
+++ storage/innobase/win_atomics32_test.c 2009-06-16 13:16:15 +0000
@@ -1,17 +1,17 @@
-# 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
====
=== modified file 'storage/innobase/win_atomics64_test.c'
--- storage/innobase/win_atomics64_test.c 2009-03-06 18:25:38 +0000
+++ storage/innobase/win_atomics64_test.c 2009-06-16 13:16:15 +0000
@@ -1,17 +1,18 @@
-# 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 int main()
Copyright (c) 2000, 2025, Oracle Corporation and/or its affiliates. All rights reserved.