+ multiple process entries per event type
This commit is contained in:
parent
b9882cb181
commit
3c76d941fa
@ -37,8 +37,11 @@ namespace vkvm {
|
||||
|
||||
auto callEvent(EventType type) -> bool {
|
||||
auto ivt = getInterrupTable();
|
||||
if (ivt[type].pid != 0) {
|
||||
sendSignal(ivt[type].pid, ivt[type].signum);
|
||||
for(int i = 0; i < impl.interruptEntrysPerEventType;i++){
|
||||
auto &entry= ivt[type * impl.interruptEntrysPerEventType + i];
|
||||
if (entry.pid != 0) {
|
||||
sendSignal(entry.pid, entry.signum);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -54,7 +54,8 @@ constexpr int keyboardBufferSize = 16;
|
||||
int sharedMemoryPid;
|
||||
key_t sharedMemoryKey;
|
||||
int sharedMemorySize;
|
||||
int interruptEntyCount = 64; //NOLINT
|
||||
int interruptEntyCount = 256; //NOLINT
|
||||
int interruptEntrysPerEventType = 8;
|
||||
int reservedSize = 1024; //NOLINT
|
||||
std::vector<std::function<void()>> eventTable;
|
||||
};
|
||||
|
30
src/vkvm.cpp
30
src/vkvm.cpp
@ -37,21 +37,27 @@ namespace vkvm {
|
||||
|
||||
lockSharedMemory();
|
||||
|
||||
ivt[type].pid = getpid();
|
||||
ivt[type].signum = signum;
|
||||
impl.eventTable.push_back(handler);
|
||||
for(int i = 0; i < impl.interruptEntrysPerEventType;i++){
|
||||
auto &entry= ivt[type * impl.interruptEntrysPerEventType + i];
|
||||
if (entry.pid == 0) {
|
||||
|
||||
onSignal(signum, [](int sig){
|
||||
if(sig >= SIGUSR1){
|
||||
if((sig - SIGUSR1) < impl.eventTable.size()){
|
||||
impl.eventTable[sig - SIGUSR1]();
|
||||
}
|
||||
entry.pid = getpid();
|
||||
entry.signum = signum;
|
||||
impl.eventTable.push_back(handler);
|
||||
|
||||
onSignal(signum, [](int sig){
|
||||
if(sig >= SIGUSR1){
|
||||
if((sig - SIGUSR1) < impl.eventTable.size()){
|
||||
impl.eventTable[sig - SIGUSR1]();
|
||||
}
|
||||
}
|
||||
});
|
||||
unlockSharedMemory();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
unlockSharedMemory();
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
auto setPixel(int x, int y, Color color) -> bool {
|
||||
|
Loading…
Reference in New Issue
Block a user