From d0990e46662af11129cbcbaa018499d7f1244538 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 5 Mar 2016 00:29:14 +0100 Subject: [PATCH] don't even try to have ucontextes on windows. we don't care of the speed on that platform. Getting it working would already be something. Plus, the portability layer that this commit removes was segfaulting. --- CMakeLists.txt | 4 - COPYING | 30 ------ src/include/mc/datatypes.h | 7 +- src/include/mc/mc.h | 7 +- src/include/xbt/win32_ucontext.h | 60 ------------ src/simix/UContext.cpp | 7 +- src/xbt/win32_ucontext.c | 107 --------------------- tools/cmake/DefinePackages.cmake | 3 - tools/cmake/test_prog/prog_AC_CHECK_MCSC.c | 12 +-- tools/cmake/test_prog/prog_stacksetup.c | 9 -- 10 files changed, 4 insertions(+), 242 deletions(-) delete mode 100644 src/include/xbt/win32_ucontext.h delete mode 100644 src/xbt/win32_ucontext.c diff --git a/CMakeLists.txt b/CMakeLists.txt index dc7e76e7b6..a052be43a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,10 +157,6 @@ set(INCLUDES ${CMAKE_BINARY_DIR}/include ) -if(WIN32) - set(INCLUDES ${INCLUDES} ${CMAKE_HOME_DIRECTORY}/include/xbt ${CMAKE_HOME_DIRECTORY}/src/xbt) #for win32_ucontext.[ch] -endif() - if(NOT CMAKE_CROSSCOMPILING AND EXISTS /usr/include/) set(INCLUDES ${INCLUDES} /usr/include/) endif() diff --git a/COPYING b/COPYING index 80daaf1ee6..eae8979092 100644 --- a/COPYING +++ b/COPYING @@ -90,36 +90,6 @@ include/xbt/mmalloc.h ========================================================================= -In order to use ucontext with windows platform we had those files : - src/xbt/win32_ucontext.c - src/include/xbt/win32_ucontext.h - -Their copyright is the following: - -/* - * win32-ucontext: Unix ucontext_t operations on Windows platforms - * Copyright(C) 2007 Panagiotis E. Hadjidoukas - * - * Contact Email: phadjido@cs.uoi.gr, xdoukas@ceid.upatras.gr - * - * win32-ucontext is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * win32-ucontext 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with SimGrid in the file LICENSE-LGPL-2.1; - * if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -========================================================================= - Some examples for SMPI were borowed from an IBM test suite. Their copyright is the following: /** diff --git a/src/include/mc/datatypes.h b/src/include/mc/datatypes.h index 401969f990..2ae50636a1 100644 --- a/src/include/mc/datatypes.h +++ b/src/include/mc/datatypes.h @@ -9,12 +9,7 @@ #include #include - -#ifdef _XBT_WIN32 -# include /* context relative declarations */ -#else -# include /* context relative declarations */ -#endif +#include /* context relative declarations */ #if HAVE_MC #include diff --git a/src/include/mc/mc.h b/src/include/mc/mc.h index e0eb414f1e..02e23c868b 100644 --- a/src/include/mc/mc.h +++ b/src/include/mc/mc.h @@ -12,12 +12,7 @@ #include #include #include /* our public interface (and definition of HAVE_MC) */ - -#ifdef _XBT_WIN32 -# include /* context relative declarations */ -#else -# include /* context relative declarations */ -#endif +#include /* context relative declarations */ /* Maximum size of the application heap. * diff --git a/src/include/xbt/win32_ucontext.h b/src/include/xbt/win32_ucontext.h deleted file mode 100644 index 76360dbee5..0000000000 --- a/src/include/xbt/win32_ucontext.h +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright (c) 2010, 2014. The SimGrid Team. - * All rights reserved. */ - -/* This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. */ - -/* - * win32-ucontext: Unix ucontext_t operations on Windows platforms - * Copyright(C) 2007 Panagiotis E. Hadjidoukas - * - * Contact Email: phadjido@cs.uoi.gr, xdoukas@ceid.upatras.gr - * - * win32-ucontext is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * win32-ucontext 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with SimGrid in the file LICENSE-LGPL-2.1; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#ifndef UCONTEXT_H -#define UCONTEXT_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include - typedef struct __stack { - void *ss_sp; - size_t ss_size; - int ss_flags; -} stack_t; -typedef CONTEXT mcontext_t; -typedef unsigned long __sigset_t; -typedef struct __ucontext { - unsigned long int uc_flags; - struct __ucontext *uc_link; - stack_t uc_stack; - mcontext_t uc_mcontext; - __sigset_t uc_sigmask; -} ucontext_t; -int getcontext(ucontext_t * ucp); -int setcontext(const ucontext_t * ucp); -int makecontext(ucontext_t *, void (*)(), int, ...); -int swapcontext(ucontext_t *, const ucontext_t *); - -#ifdef __cplusplus -} -#endif -#endif /* UCONTEXT_H */ diff --git a/src/simix/UContext.cpp b/src/simix/UContext.cpp index 6d583168d0..7cb720a125 100644 --- a/src/simix/UContext.cpp +++ b/src/simix/UContext.cpp @@ -9,6 +9,7 @@ #include #include +#include /* context relative declarations */ #include "xbt/parmap.h" #include "src/simix/smx_private.h" @@ -17,12 +18,6 @@ #include "src/context_sysv_config.h" /* loads context system definitions */ #include "mc/mc.h" -#ifdef _XBT_WIN32 -# include /* context relative declarations */ -#else -# include /* context relative declarations */ -#endif - /** Many integers are needed to store a pointer * * This is a bit paranoid about sizeof(smx_ctx_sysv_t) not being a multiple diff --git a/src/xbt/win32_ucontext.c b/src/xbt/win32_ucontext.c deleted file mode 100644 index 80dd2e5e25..0000000000 --- a/src/xbt/win32_ucontext.c +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright (c) 2010-2012, 2014-2015. The SimGrid Team. - * All rights reserved. */ - -/* This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. */ - -/* - * win32-ucontext: Unix ucontext_t operations on Windows platforms - * Copyright(C) 2007 Panagiotis E. Hadjidoukas - * - * Contact Email: phadjido@cs.uoi.gr, xdoukas@ceid.upatras.gr - * - * win32-ucontext is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * win32-ucontext 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with SimGrid in the file LICENSE-LGPL-2.1; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include "xbt/win32_ucontext.h" - -int getcontext(ucontext_t * ucp) -{ - int ret; - - /* Retrieve the full machine context */ - ucp->uc_mcontext.ContextFlags = CONTEXT_FULL | CONTEXT_DEBUG_REGISTERS; - ret = GetThreadContext(GetCurrentThread(), &ucp->uc_mcontext); - return (ret == 0) ? -1 : 0; -} - -int setcontext(const ucontext_t * ucp) -{ - int ret; - - /* Restore the full machine context (already set) */ - ret = SetThreadContext(GetCurrentThread(), &ucp->uc_mcontext); - return (ret == 0) ? -1 : 0; -} - -int makecontext(ucontext_t * ucp, void (*func) (), int argc, ...) -{ - int i; - va_list ap; - char *sp; - - /* Stack grows down */ - sp = (char *) (size_t) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size; - - /* Reserve stack space for the arguments (maximum possible: argc*(8 bytes per argument)) */ - sp -= argc * sizeof(void*); - if (sp < (char *) ucp->uc_stack.ss_sp) { - - /* errno = ENOMEM; */ - return -1; - } - - /* Set the instruction and the stack pointer */ - #if defined(_I_X86_) || defined(__i386) || defined(__i386__) || defined(_M_IX86) - ucp->uc_mcontext.Eip = (DWORD) func; - ucp->uc_mcontext.Esp = (DWORD) sp - sizeof(void*); - #elif defined(_IA64_) || defined(__ia64) || defined(__ia64__) - # error "_IA64_" - #elif defined _AMD64_ || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) - ucp->uc_mcontext.Rip = (DWORD64) func; - ucp->uc_mcontext.Rsp = (DWORD64) sp - sizeof(void*); - #else - #error "No architecture defined for Windows build." - #endif - - /* Save/Restore the full machine context */ - ucp->uc_mcontext.ContextFlags = CONTEXT_FULL | CONTEXT_DEBUG_REGISTERS; - - /* Copy the arguments */ - va_start(ap, argc); - for (i = 0; i < argc; i++) { - memcpy(sp, ap, sizeof(void*)); - ap += sizeof(void*); - sp += sizeof(void*); - } - va_end(ap); - return 0; -} - -int swapcontext(ucontext_t * oucp, const ucontext_t * ucp) -{ - int ret; - if ((oucp == NULL) || (ucp == NULL)) { - - /*errno = EINVAL; */ - return -1; - } - ret = getcontext(oucp); - if (ret == 0) { - ret = setcontext(ucp); - } - return ret; -} diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index bea0c441ce..626d21dae6 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -13,7 +13,6 @@ set(EXTRA_DIST src/include/surf/datatypes.h src/include/surf/maxmin.h src/include/surf/surf.h - src/include/xbt/win32_ucontext.h src/include/xbt/wine_dbghelp.h src/msg/msg_private.h src/portable.h @@ -107,7 +106,6 @@ set(EXTRA_DIST src/xbt/mmalloc/mmorecore.c src/xbt/mmalloc/mmprivate.h src/xbt/mmalloc/mrealloc.c - src/xbt/win32_ucontext.c tools/tesh/generate_tesh tools/lualib.patch teshsuite/lua/lua_platforms.tesh @@ -801,7 +799,6 @@ if(WIN32) ${simgrid_sources} src/simix/ThreadContext.cpp src/simix/ThreadContext.hpp - src/xbt/win32_ucontext.c src/xbt/xbt_os_thread.c ) endif() diff --git a/tools/cmake/test_prog/prog_AC_CHECK_MCSC.c b/tools/cmake/test_prog/prog_AC_CHECK_MCSC.c index 1c39b5c0ab..ef9e426748 100644 --- a/tools/cmake/test_prog/prog_AC_CHECK_MCSC.c +++ b/tools/cmake/test_prog/prog_AC_CHECK_MCSC.c @@ -6,22 +6,12 @@ #include #include - -#ifdef _XBT_WIN32 -#include "xbt/win32_ucontext.h" -#include "win32_ucontext.c" -#else #include -#endif - -void child(void); ucontext_t uc_child; ucontext_t uc_main; - - -void child(void) +static void child(void) { if (swapcontext(&uc_child, &uc_main) != 0) exit(2); diff --git a/tools/cmake/test_prog/prog_stacksetup.c b/tools/cmake/test_prog/prog_stacksetup.c index f2a446146e..0ae3568858 100644 --- a/tools/cmake/test_prog/prog_stacksetup.c +++ b/tools/cmake/test_prog/prog_stacksetup.c @@ -8,11 +8,6 @@ #define _XOPEN_SOURCE 700 #endif -#ifdef _XBT_WIN32 -#include "xbt/win32_ucontext.h" -#include "win32_ucontext.c" -#endif - #include #include #include @@ -23,13 +18,9 @@ #endif #if defined(TEST_makecontext) -#ifdef _XBT_WIN32 -#include "xbt/win32_ucontext.h" -#else #include #endif -#endif union alltypes { long l; double d; -- 2.20.1