Kernel state terminate notification support

This commit is contained in:
Dr. Chat
2015-07-21 22:11:33 -05:00
parent b6f8985c8c
commit 8d0fef1433
3 changed files with 57 additions and 19 deletions

View File

@@ -79,6 +79,11 @@ struct ProcessInfoBlock {
xe::be<uint32_t> unk_5C;
};
struct TerminateNotification {
uint32_t guest_routine;
uint32_t priority;
};
class KernelState {
public:
KernelState(Emulator* emulator);
@@ -108,6 +113,9 @@ class KernelState {
return process_info_block_address_;
}
void RegisterTitleTerminateNotification(uint32_t routine, uint32_t priority);
void RemoveTitleTerminateNotification(uint32_t routine);
void RegisterModule(XModule* module);
void UnregisterModule(XModule* module);
bool IsKernelModule(const char* name);
@@ -179,6 +187,7 @@ class KernelState {
object_ref<XUserModule> executable_module_;
std::vector<object_ref<XKernelModule>> kernel_modules_;
std::vector<object_ref<XUserModule>> user_modules_;
std::vector<TerminateNotification> terminate_notifications;
uint32_t process_info_block_address_;