FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
async-profiler/src/engine.h at master · parca-dev/async-profiler · GitHub
parca-dev
/
async-profiler
Public
forked from
async-profiler/async-profiler
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
async-profiler
/
src
/
engine.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
65 lines (54 loc) · 1.7 KB
Breadcrumbs
async-profiler
/
src
/
engine.h
Copy path
File metadata and controls
65 lines (54 loc) · 1.7 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
* Copyright 2017 Andrei Pangin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#
ifndef
_ENGINE_H
#
define
_ENGINE_H
#
include
"
arguments.h
"
class
Engine
{
protected:
static
volatile
bool
_enabled;
static
bool
updateCounter
(
volatile
unsigned
long
long
& counter,
unsigned
long
long
value,
unsigned
long
long
interval) {
if
(interval <=
1
) {
return
true
;
}
while
(
true
) {
unsigned
long
long
prev = counter;
unsigned
long
long
next = prev + value;
if
(next < interval) {
if
(
__sync_bool_compare_and_swap
(&counter, prev, next)) {
return
false
;
}
}
else
{
if
(
__sync_bool_compare_and_swap
(&counter, prev, next % interval)) {
return
true
;
}
}
}
}
public:
virtual
const
char
*
title
() {
return
"
Flame Graph
"
;
}
virtual
const
char
*
units
() {
return
"
total
"
;
}
virtual
Error
check
(Arguments& args);
virtual
Error
start
(Arguments& args);
virtual
void
stop
();
void
enableEvents
(
bool
enabled) {
_enabled = enabled;
}
};
#
endif
//
_ENGINE_H
Back
|
FazBrowse Home
|
New Git URL