ros2_control - rolling
Loading...
Searching...
No Matches
realtime_tools
realtime_tools
include
realtime_tools
realtime_helpers.hpp
1
// Copyright (c) 2022, PickNik, Inc.
2
//
3
// Redistribution and use in source and binary forms, with or without
4
// modification, are permitted provided that the following conditions are met:
5
//
6
// * Redistributions of source code must retain the above copyright
7
// notice, this list of conditions and the following disclaimer.
8
//
9
// * Redistributions in binary form must reproduce the above copyright
10
// notice, this list of conditions and the following disclaimer in the
11
// documentation and/or other materials provided with the distribution.
12
//
13
// * Neither the name of the PickNik Inc. nor the names of its
14
// contributors may be used to endorse or promote products derived from
15
// this software without specific prior written permission.
16
//
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
// POSSIBILITY OF SUCH DAMAGE.
28
29
#ifndef REALTIME_TOOLS__REALTIME_HELPERS_HPP_
30
#define REALTIME_TOOLS__REALTIME_HELPERS_HPP_
31
32
#include <string>
33
#include <thread>
34
#include <utility>
35
#include <vector>
36
37
#ifdef _WIN32
38
// Here we directly use void* instead of including windows.h
39
// and using HANDLE macro to avoid polluting all the downstream
40
// compilation units that include the public header realtime_helpers.hpp
41
// with problematic macros like MIN, MAX or ERROR
42
using
NATIVE_THREAD_HANDLE =
void
*;
43
#else
44
using
NATIVE_THREAD_HANDLE = pthread_t;
45
#endif
46
47
namespace
realtime_tools
48
{
53
bool
has_realtime_kernel
();
54
60
bool
configure_sched_fifo
(
int
priority);
61
72
std::pair<bool, std::string>
lock_memory
();
73
84
std::pair<bool, std::string>
set_thread_affinity
(
85
NATIVE_THREAD_HANDLE thread,
const
std::vector<int> & cores);
86
97
std::pair<bool, std::string>
set_thread_affinity
(NATIVE_THREAD_HANDLE thread,
int
core);
98
109
std::pair<bool, std::string>
set_thread_affinity
(std::thread & thread,
int
core);
110
120
std::pair<bool, std::string>
set_current_thread_affinity
(
int
core);
121
131
std::pair<bool, std::string>
set_current_thread_affinity
(
const
std::vector<int> & cores);
132
139
int64_t
get_number_of_available_processors
();
140
141
}
// namespace realtime_tools
142
143
#endif
// REALTIME_TOOLS__REALTIME_HELPERS_HPP_
realtime_tools
A pthread mutex wrapper that provides a mutex with the priority inheritance protocol and a priority c...
Definition
async_function_handler.hpp:38
realtime_tools::set_current_thread_affinity
std::pair< bool, std::string > set_current_thread_affinity(int core)
Definition
realtime_helpers.cpp:238
realtime_tools::set_thread_affinity
std::pair< bool, std::string > set_thread_affinity(NATIVE_THREAD_HANDLE thread, const std::vector< int > &cores)
Definition
realtime_helpers.cpp:150
realtime_tools::configure_sched_fifo
bool configure_sched_fifo(int priority)
Definition
realtime_helpers.cpp:74
realtime_tools::get_number_of_available_processors
int64_t get_number_of_available_processors()
Definition
realtime_helpers.cpp:256
realtime_tools::has_realtime_kernel
bool has_realtime_kernel()
Definition
realtime_helpers.cpp:49
realtime_tools::lock_memory
std::pair< bool, std::string > lock_memory()
Definition
realtime_helpers.cpp:101
Generated by
1.9.8