omp.h.in revision 1.3 1 1.3 mrg /* Copyright (C) 2005-2013 Free Software Foundation, Inc.
2 1.1 mrg Contributed by Richard Henderson <rth (at) redhat.com>.
3 1.1 mrg
4 1.1 mrg This file is part of the GNU OpenMP Library (libgomp).
5 1.1 mrg
6 1.1 mrg Libgomp is free software; you can redistribute it and/or modify it
7 1.1 mrg under the terms of the GNU General Public License as published by
8 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
9 1.1 mrg any later version.
10 1.1 mrg
11 1.1 mrg Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
12 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 1.1 mrg FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 1.1 mrg more details.
15 1.1 mrg
16 1.1 mrg Under Section 7 of GPL version 3, you are granted additional
17 1.1 mrg permissions described in the GCC Runtime Library Exception, version
18 1.1 mrg 3.1, as published by the Free Software Foundation.
19 1.1 mrg
20 1.1 mrg You should have received a copy of the GNU General Public License and
21 1.1 mrg a copy of the GCC Runtime Library Exception along with this program;
22 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 1.1 mrg <http://www.gnu.org/licenses/>. */
24 1.1 mrg
25 1.1 mrg #ifndef OMP_H
26 1.1 mrg #define OMP_H 1
27 1.1 mrg
28 1.1 mrg #ifndef _LIBGOMP_OMP_LOCK_DEFINED
29 1.1 mrg #define _LIBGOMP_OMP_LOCK_DEFINED 1
30 1.1 mrg /* These two structures get edited by the libgomp build process to
31 1.1 mrg reflect the shape of the two types. Their internals are private
32 1.1 mrg to the library. */
33 1.1 mrg
34 1.1 mrg typedef struct
35 1.1 mrg {
36 1.1 mrg unsigned char _x[@OMP_LOCK_SIZE@]
37 1.1 mrg __attribute__((__aligned__(@OMP_LOCK_ALIGN@)));
38 1.1 mrg } omp_lock_t;
39 1.1 mrg
40 1.1 mrg typedef struct
41 1.1 mrg {
42 1.1 mrg unsigned char _x[@OMP_NEST_LOCK_SIZE@]
43 1.1 mrg __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
44 1.1 mrg } omp_nest_lock_t;
45 1.1 mrg #endif
46 1.1 mrg
47 1.1 mrg typedef enum omp_sched_t
48 1.1 mrg {
49 1.1 mrg omp_sched_static = 1,
50 1.1 mrg omp_sched_dynamic = 2,
51 1.1 mrg omp_sched_guided = 3,
52 1.1 mrg omp_sched_auto = 4
53 1.1 mrg } omp_sched_t;
54 1.1 mrg
55 1.1 mrg #ifdef __cplusplus
56 1.1 mrg extern "C" {
57 1.1 mrg # define __GOMP_NOTHROW throw ()
58 1.1 mrg #else
59 1.1 mrg # define __GOMP_NOTHROW __attribute__((__nothrow__))
60 1.1 mrg #endif
61 1.1 mrg
62 1.1 mrg extern void omp_set_num_threads (int) __GOMP_NOTHROW;
63 1.1 mrg extern int omp_get_num_threads (void) __GOMP_NOTHROW;
64 1.1 mrg extern int omp_get_max_threads (void) __GOMP_NOTHROW;
65 1.1 mrg extern int omp_get_thread_num (void) __GOMP_NOTHROW;
66 1.1 mrg extern int omp_get_num_procs (void) __GOMP_NOTHROW;
67 1.1 mrg
68 1.1 mrg extern int omp_in_parallel (void) __GOMP_NOTHROW;
69 1.1 mrg
70 1.1 mrg extern void omp_set_dynamic (int) __GOMP_NOTHROW;
71 1.1 mrg extern int omp_get_dynamic (void) __GOMP_NOTHROW;
72 1.1 mrg
73 1.1 mrg extern void omp_set_nested (int) __GOMP_NOTHROW;
74 1.1 mrg extern int omp_get_nested (void) __GOMP_NOTHROW;
75 1.1 mrg
76 1.1 mrg extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW;
77 1.1 mrg extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW;
78 1.1 mrg extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
79 1.1 mrg extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
80 1.1 mrg extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
81 1.1 mrg
82 1.1 mrg extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
83 1.1 mrg extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
84 1.1 mrg extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
85 1.1 mrg extern void omp_unset_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
86 1.1 mrg extern int omp_test_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
87 1.1 mrg
88 1.1 mrg extern double omp_get_wtime (void) __GOMP_NOTHROW;
89 1.1 mrg extern double omp_get_wtick (void) __GOMP_NOTHROW;
90 1.1 mrg
91 1.1 mrg void omp_set_schedule (omp_sched_t, int) __GOMP_NOTHROW;
92 1.1 mrg void omp_get_schedule (omp_sched_t *, int *) __GOMP_NOTHROW;
93 1.1 mrg int omp_get_thread_limit (void) __GOMP_NOTHROW;
94 1.1 mrg void omp_set_max_active_levels (int) __GOMP_NOTHROW;
95 1.1 mrg int omp_get_max_active_levels (void) __GOMP_NOTHROW;
96 1.1 mrg int omp_get_level (void) __GOMP_NOTHROW;
97 1.1 mrg int omp_get_ancestor_thread_num (int) __GOMP_NOTHROW;
98 1.1 mrg int omp_get_team_size (int) __GOMP_NOTHROW;
99 1.1 mrg int omp_get_active_level (void) __GOMP_NOTHROW;
100 1.1 mrg
101 1.3 mrg int omp_in_final (void) __GOMP_NOTHROW;
102 1.3 mrg
103 1.1 mrg #ifdef __cplusplus
104 1.1 mrg }
105 1.1 mrg #endif
106 1.1 mrg
107 1.1 mrg #endif /* OMP_H */
108