Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
chenhuan 2019-11-20 12:43:24 +01:00
commit dcbfad5749
3 changed files with 25 additions and 15 deletions

View File

@ -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;
}

View File

@ -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;
};

View File

@ -37,8 +37,12 @@ namespace vkvm {
lockSharedMemory();
ivt[type].pid = getpid();
ivt[type].signum = signum;
for(int i = 0; i < impl.interruptEntrysPerEventType;i++){
auto &entry= ivt[type * impl.interruptEntrysPerEventType + i];
if (entry.pid == 0) {
entry.pid = getpid();
entry.signum = signum;
impl.eventTable.push_back(handler);
onSignal(signum, [](int sig){
@ -48,11 +52,13 @@ namespace vkvm {
}
}
});
unlockSharedMemory();
return true;
}
}
unlockSharedMemory();
return false;
}
auto setPixel(int x, int y, Color color) -> bool {
char *ptr = getPixelArea() + (y * getWidth() + x) * 3;