Unverified Commit b4e14e6a authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Add extrae support

parent fc3f00e9
Loading
Loading
Loading
Loading

CMake/FindExtrae.cmake

0 → 100644
+67 −0
Original line number Diff line number Diff line
# Try to find Extrae headers and library.
#
# Usage of this module as follows:
#
#     find_package(Extrae)
#
# Variables used by this module, they can change the default behaviour and need
# to be set before calling find_package:
#
# Variables defined by this module:
#
#  EXTRAE_FOUND               System has Extrae library/headers.
#  EXTRAE_LIBRARIES           The Extrae library.
#  EXTRAE_INCLUDE_DIRS        The location of Extrae headers.


find_path(EXTRAE_INCLUDE_DIR
    NAMES "extrae.h"
    HINTS "$ENV{EXTRAE_HOME}/include"
)

find_library(EXTRAE_LIBRARY
    NAMES "pttrace"
    HINTS "$ENV{EXTRAE_HOME}/lib"
)


if(EXTRAE_INCLUDE_DIR AND EXISTS "${EXTRAE_INCLUDE_DIR}/extrae_version.h")
    file(READ "${EXTRAE_INCLUDE_DIR}/extrae_version.h" EXTRAE_VERSION_HEADER)

    string(REGEX MATCH "#define EXTRAE_MAJOR ([0-9]+)" _ ${EXTRAE_VERSION_HEADER})
    set(EXTRAE_VERSION_MAJOR ${CMAKE_MATCH_1})

    string(REGEX MATCH "#define EXTRAE_MINOR ([0-9]+)" _ ${EXTRAE_VERSION_HEADER})
    set(EXTRAE_VERSION_MINOR ${CMAKE_MATCH_1})

    string(REGEX MATCH "#define EXTRAE_MICRO ([0-9]+)" _ ${EXTRAE_VERSION_HEADER})
    set(EXTRAE_VERSION_MICRO ${CMAKE_MATCH_1})

    set(EXTRAE_VERSION_STRING "${EXTRAE_VERSION_MAJOR}.${EXTRAE_VERSION_MINOR}.${EXTRAE_VERSION_MICRO}")
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
    Extrae
    REQUIRED_VARS EXTRAE_LIBRARY EXTRAE_INCLUDE_DIR
    VERSION_VAR EXTRAE_VERSION_STRING
)

mark_as_advanced(
        EXTRAE_LIBRARY
        EXTRAE_INCLUDE_DIR
)

set(EXTRAE_INCLUDE_DIRS ${EXTRAE_INCLUDE_DIR})
set(EXTRAE_LIBRARIES ${EXTRAE_LIBRARY})

if(Extrae_FOUND)
    add_library(Extrae::Extrae INTERFACE IMPORTED)
    set_target_properties(Extrae::Extrae PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${EXTRAE_INCLUDE_DIRS}"
    )
    target_link_libraries(Extrae::Extrae
        INTERFACE
        ${EXTRAE_LIBRARIES}
    )
endif()
 No newline at end of file
+8 −0
Original line number Diff line number Diff line
@@ -85,6 +85,14 @@ find_package(Abt REQUIRED)
find_package(Margo REQUIRED)
find_package(Syscall_intercept REQUIRED)


option(USE_EXTRAE "Use extrae instrumentation library" OFF)
if(USE_EXTRAE)
    find_package(Extrae REQUIRED)
    add_definitions(-DGKFS_USE_EXTRAE)
endif(USE_EXTRAE)


# boost dependencies, system is required for filesystem
find_package(Boost 1.53 REQUIRED
    COMPONENTS
+41 −0
Original line number Diff line number Diff line
#ifndef GKFS_TRACING_HPP
#define GKFS_TRACING_HPP


#ifdef GKFS_USE_EXTRAE
#include <extrae.h>
#include <dlfcn.h>
#include <stdexcept>
#include <string>
#endif


#ifdef GKFS_USE_EXTRAE
#define TRACE_FUNC_START() \
    Extrae_user_function(1);
#else
#define TRACE_FUNC_START() \
    do { } while(0);
#endif // GKFS_USE_EXTRAE

#ifdef GKFS_USE_EXTRAE
#define TRACE_FUNC_STOP() \
    Extrae_user_function(0);
#else
#define TRACE_FUNC_STOP() \
    do { } while(0);
#endif // GKFS_USE_EXTRAE


#ifdef GKFS_USE_EXTRAE

namespace gkfs { namespace trace {
    
void init();

}}

#endif


#endif // GKFS_EXTRAE_HPP
+7 −1
Original line number Diff line number Diff line
@@ -40,6 +40,13 @@ set(PRELOAD_HEADERS

add_library(gkfs_intercept SHARED ${PRELOAD_SRC} ${PRELOAD_HEADERS})

if(USE_EXTRAE)
    target_link_libraries(gkfs_intercept
        dl
        Extrae::Extrae
    )
endif(USE_EXTRAE)

target_link_libraries(gkfs_intercept
    # internal
    metadata
@@ -66,4 +73,3 @@ install(TARGETS gkfs_intercept
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gkfs
)
+10 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ set(DAEMON_SRC
    ../global/rpc/rpc_utils.cpp
    ../global/global_func.cpp
    ../global/path_util.cpp
    ../global/tracing.cpp
    main.cpp
    ops/metadentry.cpp
    classes/fs_data.cpp
@@ -21,13 +22,22 @@ set(DAEMON_HEADERS
    ../../include/global/rpc/rpc_types.hpp
    ../../include/global/rpc/rpc_utils.hpp
    ../../include/global/path_util.hpp
    ../../include/global/tracing.hpp
    ../../include/daemon/main.hpp
    ../../include/daemon/ops/metadentry.hpp
    ../../include/daemon/classes/fs_data.hpp
    ../../include/daemon/classes/rpc_data.hpp
    ../../include/daemon/handler/rpc_defs.hpp
    )

add_executable(gkfs_daemon ${DAEMON_SRC} ${DAEMON_HEADERS})

if(USE_EXTRAE)
    target_link_libraries(gkfs_daemon
        dl
        Extrae::Extrae)
endif(USE_EXTRAE)

target_link_libraries(gkfs_daemon
    # internal libs
    metadata
Loading