#if USE_DEBUGGER
/*
 * kmp_debugger.h -- debugger support.
 */


//===----------------------------------------------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.txt for details.
//
//===----------------------------------------------------------------------===//


#ifndef KMP_DEBUGGER_H
#define KMP_DEBUGGER_H

#ifdef __cplusplus
    extern "C" {
#endif // __cplusplus

/* * This external variable can be set by any debugger to flag to the runtime that we
   are currently executing inside a debugger.  This will allow the debugger to override
   the number of threads spawned in a parallel region by using __kmp_omp_num_threads() (below).
   * When __kmp_debugging is TRUE, each team and each task gets a unique integer identifier
   that can be used by debugger to conveniently identify teams and tasks.
   * The debugger has access to __kmp_omp_debug_struct_info which contains information
   about the OpenMP library's important internal structures.  This access will allow the debugger
   to read detailed information from the typical OpenMP constructs (teams, threads, tasking, etc. )
   during a debugging session and offer detailed and useful information which the user can probe
   about the OpenMP portion of their code.
   */
extern int __kmp_debugging;             /* Boolean whether currently debugging OpenMP RTL */
// Return number of threads specified by the debugger for given parallel region.
/* The ident field, which represents a source file location, is used to check if the
   debugger has changed the number of threads for the parallel region at source file
   location ident.  This way, specific parallel regions' number of threads can be changed
   at the debugger's request.
 */
int __kmp_omp_num_threads( ident_t const * ident );

#ifdef __cplusplus
    } // extern "C"
#endif // __cplusplus


#endif // KMP_DEBUGGER_H

#endif // USE_DEBUGGER
