kernel/svc: Implement svcSignalEvent()
This function simply does a handle table lookup for a writable event instance identified by the given handle value. If a writable event cannot be found for the given handle, then an invalid handle error is returned. If a writable event is found, then it simply signals the event, as one would expect.
This commit is contained in:
		@@ -1647,6 +1647,21 @@ static ResultCode ClearEvent(Handle handle) {
 | 
			
		||||
    return ERR_INVALID_HANDLE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ResultCode SignalEvent(Handle handle) {
 | 
			
		||||
    LOG_DEBUG(Kernel_SVC, "called. Handle=0x{:08X}", handle);
 | 
			
		||||
 | 
			
		||||
    HandleTable& handle_table = Core::CurrentProcess()->GetHandleTable();
 | 
			
		||||
    auto writable_event = handle_table.Get<WritableEvent>(handle);
 | 
			
		||||
 | 
			
		||||
    if (!writable_event) {
 | 
			
		||||
        LOG_ERROR(Kernel_SVC, "Non-existent writable event handle used (0x{:08X})", handle);
 | 
			
		||||
        return ERR_INVALID_HANDLE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    writable_event->Signal();
 | 
			
		||||
    return RESULT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ResultCode GetProcessInfo(u64* out, Handle process_handle, u32 type) {
 | 
			
		||||
    LOG_DEBUG(Kernel_SVC, "called, handle=0x{:08X}, type=0x{:X}", process_handle, type);
 | 
			
		||||
 | 
			
		||||
@@ -1782,7 +1797,7 @@ static const FunctionDef SVC_Table[] = {
 | 
			
		||||
    {0x0E, SvcWrap<GetThreadCoreMask>, "GetThreadCoreMask"},
 | 
			
		||||
    {0x0F, SvcWrap<SetThreadCoreMask>, "SetThreadCoreMask"},
 | 
			
		||||
    {0x10, SvcWrap<GetCurrentProcessorNumber>, "GetCurrentProcessorNumber"},
 | 
			
		||||
    {0x11, nullptr, "SignalEvent"},
 | 
			
		||||
    {0x11, SvcWrap<SignalEvent>, "SignalEvent"},
 | 
			
		||||
    {0x12, SvcWrap<ClearEvent>, "ClearEvent"},
 | 
			
		||||
    {0x13, SvcWrap<MapSharedMemory>, "MapSharedMemory"},
 | 
			
		||||
    {0x14, SvcWrap<UnmapSharedMemory>, "UnmapSharedMemory"},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user