ros2_control - humble
Loading...
Searching...
No Matches
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#include <windows.h>
39using NATIVE_THREAD_HANDLE = HANDLE;
40#else
41using NATIVE_THREAD_HANDLE = pthread_t;
42#endif
43
44namespace realtime_tools
45{
51
57bool configure_sched_fifo(int priority);
58
69[[deprecated("Use std::pair<bool, std::string> lock_memory() instead.")]]
70bool lock_memory(std::string & message);
71
82std::pair<bool, std::string> lock_memory();
83
94std::pair<bool, std::string> set_thread_affinity(
95 NATIVE_THREAD_HANDLE thread, const std::vector<int> & cores);
96
107std::pair<bool, std::string> set_thread_affinity(NATIVE_THREAD_HANDLE thread, int core);
108
119std::pair<bool, std::string> set_thread_affinity(std::thread & thread, int core);
120
130std::pair<bool, std::string> set_current_thread_affinity(int core);
131
141std::pair<bool, std::string> set_current_thread_affinity(const std::vector<int> & cores);
142
150
151} // namespace realtime_tools
152
153#endif // REALTIME_TOOLS__REALTIME_HELPERS_HPP_
A pthread mutex wrapper that provides a mutex with the priority inheritance protocol and a priority c...
Definition async_function_handler.hpp:38
std::pair< bool, std::string > set_current_thread_affinity(int core)
Definition realtime_helpers.cpp:211
std::pair< bool, std::string > set_thread_affinity(NATIVE_THREAD_HANDLE thread, const std::vector< int > &cores)
Definition realtime_helpers.cpp:123
bool configure_sched_fifo(int priority)
Definition realtime_helpers.cpp:54
int64_t get_number_of_available_processors()
Definition realtime_helpers.cpp:229
bool has_realtime_kernel()
Definition realtime_helpers.cpp:44
std::pair< bool, std::string > lock_memory()
Definition realtime_helpers.cpp:74