1.0-beta (revision 492)

pomp2_region_info.h

00001 /*
00002  * This file is part of the Score-P software (http://www.score-p.org)
00003  *
00004  * Copyright (c) 2009-2011,
00005  *    RWTH Aachen University, Germany
00006  *    Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany
00007  *    Technische Universitaet Dresden, Germany
00008  *    University of Oregon, Eugene, USA
00009  *    Forschungszentrum Juelich GmbH, Germany
00010  *    German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany
00011  *    Technische Universitaet Muenchen, Germany
00012  *
00013  * See the COPYING file in the package base directory for details.
00014  *
00015  */
00016 /****************************************************************************
00017 **  SCALASCA    http://www.scalasca.org/                                   **
00018 **  KOJAK       http://www.fz-juelich.de/jsc/kojak/                        **
00019 *****************************************************************************
00020 **  Copyright (c) 1998-2009                                                **
00021 **  Forschungszentrum Juelich, Juelich Supercomputing Centre               **
00022 **                                                                         **
00023 **  See the file COPYRIGHT in the package base directory for details       **
00024 ****************************************************************************/
00025 #ifndef POMP2_REGION_INFO_H
00026 #define POMP2_REGION_INFO_H
00027 
00041 #include <stdbool.h>
00042 
00047 typedef enum /* POMP2_Region_type */
00048 {
00049     POMP2_No_type,
00050     POMP2_Atomic,
00051     POMP2_Barrier,
00052     POMP2_Critical,
00053     POMP2_Do,
00054     POMP2_Flush,
00055     POMP2_For,
00056     POMP2_Master,
00057     POMP2_Ordered,
00058     POMP2_Parallel,
00059     POMP2_Parallel_do,
00060     POMP2_Parallel_for,
00061     POMP2_Parallel_sections,
00062     POMP2_Parallel_workshare,
00063     POMP2_Sections,
00064     POMP2_Single,
00065     POMP2_Task,
00066     POMP2_Taskuntied,
00067     POMP2_Taskwait,
00068     POMP2_User_region,
00069     POMP2_Workshare
00070 } POMP2_Region_type;
00071 
00074 const char*
00075 pomp2RegionType2String( POMP2_Region_type regionType );
00076 
00081 typedef enum
00082 {
00083     POMP2_No_schedule,
00084     POMP2_Static,  /* needs chunk size */
00085     POMP2_Dynamic, /* needs chunk size */
00086     POMP2_Guided,  /* needs chunk size */
00087     POMP2_Runtime,
00088     POMP2_Auto
00089 } POMP2_Schedule_type;
00090 
00093 const char*
00094 pomp2ScheduleType2String( POMP2_Schedule_type scheduleType );
00095 
00102 typedef struct
00103 {
00108     POMP2_Region_type mRegionType;
00110     char*             mStartFileName;
00112     unsigned          mStartLine1;
00114     unsigned          mStartLine2;
00116     char*             mEndFileName;
00118     unsigned          mEndLine1;
00120     unsigned          mEndLine2;
00127     bool                mHasCopyIn;
00129     bool                mHasCopyPrivate;
00131     bool                mHasIf;
00133     bool                mHasFirstPrivate;
00135     bool                mHasLastPrivate;
00137     bool                mHasNoWait;
00139     bool                mHasNumThreads;
00141     bool                mHasOrdered;
00143     bool                mHasReduction;
00145     POMP2_Schedule_type mScheduleType;
00147     char*               mUserGroupName;
00154     unsigned mNumSections;
00156     char*    mCriticalName;
00158     char*    mUserRegionName;
00160 } POMP2_Region_info;
00161 
00196 void
00197 ctcString2RegionInfo( const char         ctcString[],
00198                       POMP2_Region_info* regionInfo );
00199 
00204 void
00205 freePOMP2RegionInfoMembers( POMP2_Region_info* regionInfo );
00206 
00207 
00208 #endif /* POMP2_REGION_INFO_H */