Apollo
10.0
自动驾驶开放平台
block_manager.h
浏览该文件的文档.
1
/******************************************************************************
2
* Copyright 2023 The Apollo Authors. All Rights Reserved.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*****************************************************************************/
16
17
#ifndef CYBER_PROFILER_BLOCK_MANAGER_H_
18
#define CYBER_PROFILER_BLOCK_MANAGER_H_
19
20
#include <string>
21
#include <unordered_map>
22
23
#include "
cyber/common/macros.h
"
24
#include "
cyber/profiler/block.h
"
25
#include "
cyber/profiler/frame.h
"
26
27
namespace
apollo
{
28
namespace
cyber {
29
namespace
profiler {
30
31
class
BlockManager
{
32
public
:
33
using
RoutineName
= std::string;
34
using
RoutineFrameMap
= std::unordered_map<RoutineName, Frame>;
35
36
public
:
37
void
StartBlock
(
Block
* block);
38
39
void
EndBlock
();
40
41
private
:
42
std::string GetRoutineName();
43
Frame
* GetRoutineFrame();
44
45
private
:
46
static
thread_local
RoutineFrameMap
routine_frame_map_;
47
48
DECLARE_SINGLETON
(
BlockManager
)
49
};
50
51
}
// namespace profiler
52
}
// namespace cyber
53
}
// namespace apollo
54
55
#endif
// CYBER_PROFILER_BLOCK_MANAGER_H_
apollo::cyber::profiler::BlockManager
Definition
block_manager.h:31
apollo::cyber::profiler::BlockManager::RoutineName
std::string RoutineName
Definition
block_manager.h:33
apollo::cyber::profiler::BlockManager::StartBlock
void StartBlock(Block *block)
Definition
block_manager.cc:30
apollo::cyber::profiler::BlockManager::EndBlock
void EndBlock()
Definition
block_manager.cc:39
apollo::cyber::profiler::BlockManager::RoutineFrameMap
std::unordered_map< RoutineName, Frame > RoutineFrameMap
Definition
block_manager.h:34
apollo::cyber::profiler::Block
Definition
block.h:27
apollo::cyber::profiler::Frame
Definition
frame.h:30
macros.h
DECLARE_SINGLETON
#define DECLARE_SINGLETON(classname)
Definition
macros.h:52
frame.h
apollo
class register implement
Definition
arena_queue.h:37
block.h
cyber
profiler
block_manager.h