library/src/vkvm.cpp

29 lines
647 B
C++

#include "vkvm.h"
#include "internal.h"
#include <unistd.h>
#include <csignal>
void initialize(int pid) {
impl.sharedMemoryPid = pid;
impl.sharedMemoryKey = 892348;
impl.sharedMemorySize = 0;
}
bool registerEvent(EventType type, std::function<void()> handler) {
int signum = SIGUSR1 + impl.eventTable.size();
auto ivt = getInterrupTable();
ivt[type].pid = getpid();
ivt[type].signum = signum;
onSignal(signum, [](int sig){
if(sig >= SIGUSR1){
if((sig - SIGUSR1) < impl.eventTable.size()){
impl.eventTable[sig - SIGUSR1]();
}
}
});
return true;
}