#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
