43 std::function<void(
void)> g_sig_int_handler_callback;
45 void sig_int_handler(
int)
47 if (g_sig_int_handler_callback)
48 g_sig_int_handler_callback();
55 cpu_set_t actual_cpuset;
56 cpu_set_t desired_cpuset;
59 CPU_ZERO(&actual_cpuset);
60 CPU_ZERO(&desired_cpuset);
61 CPU_SET(cpu_core_idx, &desired_cpuset);
63 ret = pthread_setaffinity_np(thread.native_handle(),
sizeof(desired_cpuset), &desired_cpuset);
66 "Unable to set thread affinity to cpu " +
std::to_string(cpu_core_idx) +
70 ret = pthread_getaffinity_np(thread.native_handle(),
sizeof(actual_cpuset), &actual_cpuset);
73 "Unable to retrieve thread affinity to verify usage of cpu " +
78 for (
size_t ii = 0; ii != CPU_SETSIZE; ++ii) {
79 if (CPU_ISSET(ii, &actual_cpuset) && CPU_ISSET(ii, &desired_cpuset)) {
86 ". Failed to apply successfully"};
97 auto const result = sysconf(_SC_PAGESIZE);
100 "Failed to get system page size. Error: " +
strerror_r(errno)};
103 return static_cast<uint32_t
>(
result);
108 g_sig_int_handler_callback = callback;
109 struct sigaction new_sigaction {};
110 new_sigaction.sa_handler = sig_int_handler;
111 new_sigaction.sa_flags = 0;
113 sigemptyset(&new_sigaction.sa_mask);
115 if (sigaction(SIGINT, &new_sigaction,
nullptr) != 0) {
123 g_sig_int_handler_callback = {};
@ DOCA_ERROR_OPERATING_SYSTEM
std::string to_string(storage::control::message_type type)
void set_thread_affinity(std::thread &thread, uint32_t cpu_core_idx)
void uninstall_ctrl_c_handler()
std::string strerror_r(int err) noexcept
void install_ctrl_c_handler(std::function< void(void)> callback)
void aligned_free(void *memory)
void * aligned_alloc(size_t alignment, size_t size)
uint32_t get_system_page_size(void)