From 4805d4d8ceff59315d923973709b4305cf37c616 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sun, 18 Oct 2015 12:42:20 +0200 Subject: [PATCH] prepare (i)RCCE to support OpenMP on HermitCore HermitCore isn't able to support the SCC emulator => disable emulator specific details (OpenMP staff) => OpenMP applications on HermitCore are able to use iRCCE => ATTENTION: (i)RCCE isn't thread-safe --- hermit/usr/ircce/RCCE.h | 8 ++++++-- hermit/usr/ircce/RCCE_lib.h | 4 ++-- hermit/usr/ircce/iRCCE.h | 7 +++++-- hermit/usr/ircce/iRCCE_lib.h | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/hermit/usr/ircce/RCCE.h b/hermit/usr/ircce/RCCE.h index b04479394..18ac37507 100644 --- a/hermit/usr/ircce/RCCE.h +++ b/hermit/usr/ircce/RCCE.h @@ -24,6 +24,10 @@ // by Carsten Clauss, Chair for Operating Systems, // RWTH Aachen University // +// [2015-10-18] port (i)RCCE to "HermitCore" +// by Stefan Lankes, Institute for Automation of Complex Power Systems +// RWTH Aachen University + #ifndef RCCE_H #define RCCE_H @@ -45,7 +49,7 @@ #define ABS(x) ((x > 0)?x:-x) -#ifndef _OPENMP +#if !defined(_OPENMP) || defined(__hermit__) #define RCCE_APP main #endif @@ -364,7 +368,7 @@ extern RCCE_COMM RCCE_P_COMM; #define RCCE_POWER_DEFAULT -99999 #endif -#ifdef _OPENMP +#if defined(_OPENMP) && !defined(__hermit__) #pragma omp threadprivate (RCCE_COMM_WORLD) #ifdef RC_POWER_MANAGEMENT #pragma omp threadprivate (RCCE_P_COMM) diff --git a/hermit/usr/ircce/RCCE_lib.h b/hermit/usr/ircce/RCCE_lib.h index 84d329762..d1f4e175d 100644 --- a/hermit/usr/ircce/RCCE_lib.h +++ b/hermit/usr/ircce/RCCE_lib.h @@ -16,7 +16,7 @@ #ifndef RCCE_LIB_H #define RCCE_LIB_H #include "RCCE.h" -#ifdef _OPENMP +#if defined(_OPENMP) && !defined(__hermit__) #include #endif #include @@ -349,7 +349,7 @@ t_vcharp RC_FLAG_BUFFER_START(int); #endif #endif -#ifdef _OPENMP +#if defined(_OPENMP) && !defined(__hermit__) #pragma omp threadprivate (RC_COREID, RC_MY_COREID, RC_REFCLOCKGHZ) #pragma omp threadprivate (RCCE_comm_buffer) #pragma omp threadprivate (RCCE_BUFF_SIZE) diff --git a/hermit/usr/ircce/iRCCE.h b/hermit/usr/ircce/iRCCE.h index 777e5e706..81e4cb6ae 100644 --- a/hermit/usr/ircce/iRCCE.h +++ b/hermit/usr/ircce/iRCCE.h @@ -49,6 +49,9 @@ // by Carsten Clauss, Chair for Operating Systems, // RWTH Aachen University // +// [2015-10-18] port (i)RCCE to "HermitCore" +// by Stefan Lankes, Institute for Automation of Complex Power Systems +// RWTH Aachen University #ifndef IRCCE_H #define IRCCE_H @@ -70,7 +73,7 @@ extern const int iRCCE_ANY_LENGTH; #endif #if !defined(SINGLEBITFLAGS) -#ifdef _OPENMP +#if defined(_OPENMP) && !defined(__hermit__) #define iRCCE_MAX_TAGGED_LEN (RCCE_LINE_SIZE - 2 * sizeof(int)) #else #define iRCCE_MAX_TAGGED_LEN (RCCE_LINE_SIZE - sizeof(int)) @@ -145,7 +148,7 @@ typedef struct _iRCCE_WAIT_LIST { #ifdef AIR typedef volatile struct _iRCCE_AIR { -#ifndef _OPENMP +#if !defined(_OPENMP) || defined(__hermit__) int * counter; int * init; #else diff --git a/hermit/usr/ircce/iRCCE_lib.h b/hermit/usr/ircce/iRCCE_lib.h index a55616edc..2bb79052b 100644 --- a/hermit/usr/ircce/iRCCE_lib.h +++ b/hermit/usr/ircce/iRCCE_lib.h @@ -51,7 +51,7 @@ extern iRCCE_RECV_REQUEST* iRCCE_irecv_any_source_queue; extern int iRCCE_recent_source; extern int iRCCE_recent_length; -#ifdef _OPENMP +#if defined(_OPENMP) && !defined(__hermit__) #pragma omp threadprivate (iRCCE_isend_queue, iRCCE_irecv_queue, iRCCE_irecv_any_source_queue, iRCCE_recent_source, iRCCE_recent_length) #endif