Files
kotlin-fork/kotlin-native/backend.native/tests/interop/workerSignals/workerSignals.cpp
T
Alexander Shabalin 58569f2eee Fix pthread to number converstion ^KT-52429
Merge-request: KT-MR-6918
Merged-by: Alexander Shabalin <Alexander.Shabalin@jetbrains.com>
2022-08-23 16:36:24 +00:00

34 lines
608 B
C++

#include "workerSignals.h"
#include <cassert>
#include <cstring>
#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;
pthread_t t = {};
memcpy(&t, &thread, sizeof(pthread_t));
auto result = pthread_kill(t, SIGUSR1);
assert(result == 0);
}
extern "C" int getValue(void) {
return value;
}