From 467944fe0ac76fb00b1e9b3a919b1ce4a165ef0f Mon Sep 17 00:00:00 2001 From: navarrop Date: Tue, 15 Jun 2010 13:00:41 +0000 Subject: [PATCH] Add context ucontext for windows. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7860 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- buildtools/Cmake/CompleteInFiles.cmake | 19 ++++++++++++------- buildtools/Cmake/Option.cmake | 1 - buildtools/Cmake/gras_config.h.in | 3 +++ buildtools/Cmake/test_prog/prog_stacksetup.c | 6 ++++++ src/simix/smx_context_sysv.c | 7 +++++++ src/surf/surf.c | 4 ++-- src/win32/compiler/visualc.h | 9 +++++---- 7 files changed, 35 insertions(+), 14 deletions(-) diff --git a/buildtools/Cmake/CompleteInFiles.cmake b/buildtools/Cmake/CompleteInFiles.cmake index e5b01d7d59..168aff8c09 100644 --- a/buildtools/Cmake/CompleteInFiles.cmake +++ b/buildtools/Cmake/CompleteInFiles.cmake @@ -34,6 +34,7 @@ CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H) CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H) CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H) CHECK_INCLUDE_FILE(string.h HAVE_STRING_H) +CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_H) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(usleep HAVE_USLEEP) @@ -49,6 +50,11 @@ CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) +if(WIN32) + set(HAVE_UCONTEXT_H 1) + set(HAVE_MAKECONTEXT 1) +endif(WIN32) + set(CONTEXT_UCONTEXT 0) SET(CONTEXT_THREADS 0) SET(HAVE_RUBY 0) @@ -360,8 +366,6 @@ if(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git) STRING(REPLACE " +0000" "" GIT_DATE ${GIT_DATE}) STRING(REPLACE " " "~" GIT_DATE ${GIT_DATE}) STRING(REPLACE ":" "-" GIT_DATE ${GIT_DATE}) - message("GIT_DATE : ${GIT_DATE}") - message("GIT_VERSION : ${GIT_VERSION}") foreach(line ${GIT_SVN_VERSION}) string(REGEX MATCH "^Revision:.*" line_good ${line}) if(line_good) @@ -369,7 +373,6 @@ if(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git) set(SVN_VERSION ${line_good}) endif(line_good) endforeach(line ${GIT_SVN_VERSION}) - message("GIT_SVN_VERSION : ${SVN_VERSION}") endif(IS_DIRECTORY ${PROJECT_DIRECTORY}/.git) ################################### @@ -471,20 +474,22 @@ SET(SIZEOF_MAX ${var3}) #-------------------------------------------------------------------------------------------------- set(makecontext_CPPFLAGS_2 "") -if(HAVE_MAKECONTEXT) +if(HAVE_MAKECONTEXT OR WIN32) set(makecontext_CPPFLAGS "-DTEST_makecontext") if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set(makecontext_CPPFLAGS_2 "-DOSX") endif(CMAKE_SYSTEM_NAME MATCHES "Darwin") + + if(WIN32) + set(makecontext_CPPFLAGS_2 "-DWIN32 ${INCLUDES}") + endif(WIN32) try_run(RUN_makecontext_VAR COMPILE_makecontext_VAR ${PROJECT_DIRECTORY} ${PROJECT_DIRECTORY}/buildtools/Cmake/test_prog/prog_stacksetup.c COMPILE_DEFINITIONS "${makecontext_CPPFLAGS} ${makecontext_CPPFLAGS_2}" ) - file(READ ${simgrid_BINARY_DIR}/conftestval MAKECONTEXT_ADDR_SIZE) - message("MAKECONTEXT_ADDR_SIZE : ${MAKECONTEXT_ADDR_SIZE}") string(REPLACE "\n" "" MAKECONTEXT_ADDR_SIZE "${MAKECONTEXT_ADDR_SIZE}") string(REGEX MATCH ;^.*,;MAKECONTEXT_ADDR "${MAKECONTEXT_ADDR_SIZE}") string(REGEX MATCH ;,.*$; MAKECONTEXT_SIZE "${MAKECONTEXT_ADDR_SIZE}") @@ -493,7 +498,7 @@ if(HAVE_MAKECONTEXT) set(pth_skaddr_makecontext "#define pth_skaddr_makecontext(skaddr,sksize) (${makecontext_addr})") set(pth_sksize_makecontext "#define pth_sksize_makecontext(skaddr,sksize) (${makecontext_size})") -endif(HAVE_MAKECONTEXT) +endif(HAVE_MAKECONTEXT OR WIN32) #-------------------------------------------------------------------------------------------------- diff --git a/buildtools/Cmake/Option.cmake b/buildtools/Cmake/Option.cmake index d425823c14..2177b3fccb 100644 --- a/buildtools/Cmake/Option.cmake +++ b/buildtools/Cmake/Option.cmake @@ -40,7 +40,6 @@ if(WIN32) #actually not enable with windows message("Mode supernovae and maintainer disable with Windows.") set(enable_supernovae false CACHE TYPE INTERNAL FORCE) set(enable_maintainer_mode false CACHE TYPE INTERNAL FORCE) - set(with_context "windows" CACHE TYPE INTERNAL FORCE) endif(WIN32) mark_as_advanced(enable_coverage) diff --git a/buildtools/Cmake/gras_config.h.in b/buildtools/Cmake/gras_config.h.in index 5d0d6a2917..ba3c427c5f 100644 --- a/buildtools/Cmake/gras_config.h.in +++ b/buildtools/Cmake/gras_config.h.in @@ -44,6 +44,9 @@ /* Define if xbt contexts are based on our threads implementation or not */ #cmakedefine CONTEXT_THREADS @CONTEXT_THREADS@ +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UCONTEXT_H @HAVE_UCONTEXT_H@ + /* Define if xbt contexts are based on ucontext or not */ #cmakedefine CONTEXT_UCONTEXT @CONTEXT_UCONTEXT@ diff --git a/buildtools/Cmake/test_prog/prog_stacksetup.c b/buildtools/Cmake/test_prog/prog_stacksetup.c index 102645eed1..8bad94a636 100644 --- a/buildtools/Cmake/test_prog/prog_stacksetup.c +++ b/buildtools/Cmake/test_prog/prog_stacksetup.c @@ -7,6 +7,12 @@ #if defined OSX #define _XOPEN_SOURCE #endif + +#ifdef WIN32 + #include "ucontext.h" + #include "ucontext.c" +#endif + #include #include #include diff --git a/src/simix/smx_context_sysv.c b/src/simix/smx_context_sysv.c index 9f07c24a87..775db1c1be 100644 --- a/src/simix/smx_context_sysv.c +++ b/src/simix/smx_context_sysv.c @@ -6,12 +6,19 @@ /* 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. */ + + #include "smx_context_sysv_private.h" #ifdef HAVE_VALGRIND_VALGRIND_H # include #endif /* HAVE_VALGRIND_VALGRIND_H */ +#ifdef WIN32 + #include "ucontext.h" + #include "ucontext.c" +#endif + XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context); static smx_context_t diff --git a/src/surf/surf.c b/src/surf/surf.c index a670cc14b7..427af07a47 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -245,7 +245,7 @@ XBT_LOG_EXTERNAL_CATEGORY(surf_parse); XBT_LOG_EXTERNAL_CATEGORY(surf_timer); XBT_LOG_EXTERNAL_CATEGORY(surf_workstation); XBT_LOG_EXTERNAL_CATEGORY(surf_config); -XBT_LOG_EXTERNAL_CATEGORY(surf_routing); +XBT_LOG_EXTERNAL_CATEGORY(surf_route); #ifdef HAVE_GTNETS @@ -266,7 +266,7 @@ void surf_init(int *argc, char **argv) XBT_LOG_CONNECT(surf_timer, surf); XBT_LOG_CONNECT(surf_workstation, surf); XBT_LOG_CONNECT(surf_config, surf); - XBT_LOG_CONNECT(surf_routing, surf); + XBT_LOG_CONNECT(surf_route, surf); #ifdef HAVE_GTNETS XBT_LOG_CONNECT(surf_network_gtnets, surf); diff --git a/src/win32/compiler/visualc.h b/src/win32/compiler/visualc.h index cd6d11737d..6844375b24 100644 --- a/src/win32/compiler/visualc.h +++ b/src/win32/compiler/visualc.h @@ -381,6 +381,10 @@ the double. For now, GRAS requires the structures to be compacted. */ #define va_copy(d, s) __VA_COPY_USE(d, s) #endif + /* Define to id of used va_copy() implementation */ + #ifndef __VA_COPY_USE + #define __VA_COPY_USE __VA_COPY_USE_C99 + #endif #endif /* xbt contexts are based on our threads implementation */ @@ -388,15 +392,12 @@ the double. For now, GRAS requires the structures to be compacted. */ #define CONTEXT_THREADS 1 #endif + /* xbt contexts are not based on ucontext */ #ifdef CONTEXT_UCONTEXT #undef CONTEXT_UCONTEXT #endif -/* Define to id of used va_copy() implementation */ -#ifndef __VA_COPY_USE - #define __VA_COPY_USE __VA_COPY_USE_C99 -#endif #ifndef _XBT_CALL #if defined(_XBT_DESIGNATED_DLL) -- 2.20.1