Skip to content

Commit fa91009

Browse files
authored
Improve has_realtime_kernel method (backport #260) (#267)
1 parent 77dbbed commit fa91009

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/realtime_helpers.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,40 @@
3434
#include <sched.h>
3535
#include <sys/capability.h>
3636
#include <sys/mman.h>
37+
#include <sys/utsname.h>
3738

3839
#include <unistd.h>
3940
#endif
4041

4142
#include <cstring>
4243
#include <fstream>
44+
#include <iostream>
4345

4446
namespace realtime_tools
4547
{
4648
bool has_realtime_kernel()
4749
{
50+
#ifdef _WIN32
51+
std::cerr << "Realtime kernel detection is not supported on Windows." << std::endl;
52+
return false;
53+
#else
4854
std::ifstream realtime_file("/sys/kernel/realtime", std::ios::in);
4955
bool has_realtime = false;
5056
if (realtime_file.is_open()) {
5157
realtime_file >> has_realtime;
5258
}
59+
if (!has_realtime) {
60+
struct utsname kernel_info;
61+
if (uname(&kernel_info) == -1) {
62+
std::cerr << "Error: Could not get kernel information : " << std::strerror(errno)
63+
<< std::endl;
64+
return false;
65+
}
66+
const std::string kernel_version(kernel_info.version);
67+
return kernel_version.find("PREEMPT_RT") != std::string::npos;
68+
}
5369
return has_realtime;
70+
#endif
5471
}
5572

5673
bool configure_sched_fifo(int priority)

0 commit comments

Comments
 (0)