]>
Commit | Line | Data |
---|---|---|
1218d701 SR |
1 | // -*- C++ -*- |
2 | // | |
405feeb8 | 3 | // Copyright (C) 2009-2013 Free Software Foundation, Inc. |
1218d701 SR |
4 | // |
5 | // This file is part of the GNU ISO C++ Library. This library is free | |
4bee90f7 PC |
6 | // software; you can redistribute it and/or modify it under the |
7 | // terms of the GNU General Public License as published by the | |
8 | // Free Software Foundation; either version 3, or (at your option) | |
9 | // any later version. | |
10 | // | |
11 | // This library is distributed in the hope that it will be useful, | |
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | // GNU General Public License for more details. | |
1889b253 PC |
15 | |
16 | // Under Section 7 of GPL version 3, you are granted additional | |
17 | // permissions described in the GCC Runtime Library Exception, version | |
18 | // 3.1, as published by the Free Software Foundation. | |
19 | ||
4bee90f7 PC |
20 | // You should have received a copy of the GNU General Public License along |
21 | // with this library; see the file COPYING3. If not see | |
22 | // <http://www.gnu.org/licenses/>. | |
1218d701 | 23 | |
8e32aa11 | 24 | /** @file profile/impl/profiler_state.h |
1218d701 SR |
25 | * @brief Global profiler state. |
26 | */ | |
27 | ||
28 | // Written by Lixia Liu and Silvius Rus. | |
29 | ||
6b223191 BK |
30 | #ifndef _GLIBCXX_PROFILE_PROFILER_STATE_H |
31 | #define _GLIBCXX_PROFILE_PROFILER_STATE_H 1 | |
1218d701 | 32 | |
9ee6a740 | 33 | namespace __gnu_profile |
1218d701 | 34 | { |
b0af13ea | 35 | enum __state_type { __ON, __OFF, __INVALID }; |
a1360f57 | 36 | |
b0af13ea | 37 | _GLIBCXX_PROFILE_DEFINE_DATA(__state_type, __state, __INVALID); |
a1360f57 | 38 | |
b0af13ea PC |
39 | inline bool |
40 | __turn(__state_type __s) | |
75cee7c6 BK |
41 | { |
42 | __state_type inv(__INVALID); | |
43 | return __atomic_compare_exchange_n(&_GLIBCXX_PROFILE_DATA(__state), | |
b2cb6964 | 44 | &inv, __s, false, __ATOMIC_ACQ_REL, |
75cee7c6 BK |
45 | __ATOMIC_RELAXED); |
46 | } | |
a1360f57 | 47 | |
b0af13ea PC |
48 | inline bool |
49 | __turn_on() | |
50 | { return __turn(__ON); } | |
a1360f57 | 51 | |
b0af13ea PC |
52 | inline bool |
53 | __turn_off() | |
54 | { return __turn(__OFF); } | |
a1360f57 | 55 | |
b0af13ea PC |
56 | inline bool |
57 | __is_on() | |
58 | { return _GLIBCXX_PROFILE_DATA(__state) == __ON; } | |
a1360f57 | 59 | |
b0af13ea PC |
60 | inline bool |
61 | __is_off() | |
62 | { return _GLIBCXX_PROFILE_DATA(__state) == __OFF; } | |
a1360f57 | 63 | |
b0af13ea PC |
64 | inline bool |
65 | __is_invalid() | |
66 | { return _GLIBCXX_PROFILE_DATA(__state) == __INVALID; } | |
1218d701 | 67 | |
9ee6a740 | 68 | } // end namespace __gnu_profile |
6b223191 | 69 | #endif /* _GLIBCXX_PROFILE_PROFILER_STATE_H */ |