[K/N] Worker API improvements ^KT-52429

Merge-request: KT-MR-6898
Merged-by: Alexander Shabalin <Alexander.Shabalin@jetbrains.com>
This commit is contained in:
Alexander Shabalin
2022-08-22 10:41:14 +00:00
committed by Space
parent 6e2202ad5a
commit 6f844f15e0
9 changed files with 206 additions and 0 deletions
@@ -0,0 +1,31 @@
#include "workerSignals.h"
#include <cassert>
#include <pthread.h>
#include <signal.h>
namespace {
int pendingValue = 0;
thread_local int value = 0;
void signalHandler(int signal) {
value = pendingValue;
}
} // namespace
extern "C" void setupSignalHandler(void) {
signal(SIGUSR1, &signalHandler);
}
extern "C" void signalThread(uint64_t thread, int value) {
pendingValue = value;
auto t = reinterpret_cast<pthread_t>(thread);
auto result = pthread_kill(t, SIGUSR1);
assert(result == 0);
}
extern "C" int getValue(void) {
return value;
}