[Kernel] Flag a few frequently-used functions as kHighFrequency

This commit is contained in:
Dr. Chat 2018-05-05 18:44:08 -05:00
parent 77d1d7342e
commit 10c8413acf
3 changed files with 34 additions and 25 deletions

View File

@ -68,7 +68,8 @@ dword_result_t XNotifyGetNext(dword_t handle, dword_t match_id,
return dequeued ? 1 : 0; return dequeued ? 1 : 0;
} }
DECLARE_XAM_EXPORT(XNotifyGetNext, ExportTag::kImplemented); DECLARE_XAM_EXPORT(XNotifyGetNext,
ExportTag::kImplemented | ExportTag::kHighFrequency);
dword_result_t XNotifyDelayUI(dword_t delay_ms) { dword_result_t XNotifyDelayUI(dword_t delay_ms) {
// Ignored. // Ignored.

View File

@ -36,7 +36,8 @@ dword_result_t XAudioGetVoiceCategoryVolumeChangeMask(lpunknown_t driver_ptr,
return X_ERROR_SUCCESS; return X_ERROR_SUCCESS;
} }
DECLARE_XBOXKRNL_EXPORT(XAudioGetVoiceCategoryVolumeChangeMask, DECLARE_XBOXKRNL_EXPORT(XAudioGetVoiceCategoryVolumeChangeMask,
ExportTag::kStub | ExportTag::kAudio); ExportTag::kStub | ExportTag::kAudio |
ExportTag::kHighFrequency);
dword_result_t XAudioGetVoiceCategoryVolume(dword_t unk, lpfloat_t out_ptr) { dword_result_t XAudioGetVoiceCategoryVolume(dword_t unk, lpfloat_t out_ptr) {
// Expects a floating point single. Volume %? // Expects a floating point single. Volume %?
@ -92,7 +93,8 @@ dword_result_t XAudioSubmitRenderDriverFrame(lpunknown_t driver_ptr,
return X_ERROR_SUCCESS; return X_ERROR_SUCCESS;
} }
DECLARE_XBOXKRNL_EXPORT(XAudioSubmitRenderDriverFrame, DECLARE_XBOXKRNL_EXPORT(XAudioSubmitRenderDriverFrame,
ExportTag::kImplemented | ExportTag::kAudio); ExportTag::kImplemented | ExportTag::kAudio |
ExportTag::kHighFrequency);
void RegisterAudioExports(xe::cpu::ExportResolver* export_resolver, void RegisterAudioExports(xe::cpu::ExportResolver* export_resolver,
KernelState* kernel_state) { KernelState* kernel_state) {

View File

@ -447,8 +447,9 @@ dword_result_t KeSetEvent(pointer_t<X_KEVENT> event_ptr, dword_t increment,
return ev->Set(increment, !!wait); return ev->Set(increment, !!wait);
} }
DECLARE_XBOXKRNL_EXPORT(KeSetEvent, DECLARE_XBOXKRNL_EXPORT(KeSetEvent, ExportTag::kImplemented |
ExportTag::kImplemented | ExportTag::kThreading); ExportTag::kThreading |
ExportTag::kHighFrequency);
dword_result_t KePulseEvent(pointer_t<X_KEVENT> event_ptr, dword_t increment, dword_result_t KePulseEvent(pointer_t<X_KEVENT> event_ptr, dword_t increment,
dword_t wait) { dword_t wait) {
@ -460,7 +461,9 @@ dword_result_t KePulseEvent(pointer_t<X_KEVENT> event_ptr, dword_t increment,
return ev->Pulse(increment, !!wait); return ev->Pulse(increment, !!wait);
} }
DECLARE_XBOXKRNL_EXPORT(KePulseEvent, ExportTag::kImplemented); DECLARE_XBOXKRNL_EXPORT(KePulseEvent, ExportTag::kImplemented |
ExportTag::kThreading |
ExportTag::kHighFrequency);
dword_result_t KeResetEvent(pointer_t<X_KEVENT> event_ptr) { dword_result_t KeResetEvent(pointer_t<X_KEVENT> event_ptr) {
auto ev = XObject::GetNativeObject<XEvent>(kernel_state(), event_ptr); auto ev = XObject::GetNativeObject<XEvent>(kernel_state(), event_ptr);
@ -523,8 +526,9 @@ dword_result_t NtSetEvent(dword_t handle, lpdword_t previous_state_ptr) {
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(NtSetEvent, DECLARE_XBOXKRNL_EXPORT(NtSetEvent, ExportTag::kImplemented |
ExportTag::kImplemented | ExportTag::kThreading); ExportTag::kThreading |
ExportTag::kHighFrequency);
dword_result_t NtPulseEvent(dword_t handle, lpdword_t previous_state_ptr) { dword_result_t NtPulseEvent(dword_t handle, lpdword_t previous_state_ptr) {
X_STATUS result = X_STATUS_SUCCESS; X_STATUS result = X_STATUS_SUCCESS;
@ -541,8 +545,9 @@ dword_result_t NtPulseEvent(dword_t handle, lpdword_t previous_state_ptr) {
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(NtPulseEvent, DECLARE_XBOXKRNL_EXPORT(NtPulseEvent, ExportTag::kImplemented |
ExportTag::kImplemented | ExportTag::kThreading); ExportTag::kThreading |
ExportTag::kHighFrequency);
dword_result_t NtClearEvent(dword_t handle) { dword_result_t NtClearEvent(dword_t handle) {
X_STATUS result = X_STATUS_SUCCESS; X_STATUS result = X_STATUS_SUCCESS;
@ -556,8 +561,9 @@ dword_result_t NtClearEvent(dword_t handle) {
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(NtClearEvent, DECLARE_XBOXKRNL_EXPORT(NtClearEvent, ExportTag::kImplemented |
ExportTag::kImplemented | ExportTag::kThreading); ExportTag::kThreading |
ExportTag::kHighFrequency);
// https://msdn.microsoft.com/en-us/library/windows/hardware/ff552150(v=vs.85).aspx // https://msdn.microsoft.com/en-us/library/windows/hardware/ff552150(v=vs.85).aspx
void KeInitializeSemaphore(pointer_t<X_KSEMAPHORE> semaphore_ptr, dword_t count, void KeInitializeSemaphore(pointer_t<X_KSEMAPHORE> semaphore_ptr, dword_t count,
@ -838,9 +844,9 @@ dword_result_t KeWaitForSingleObject(lpvoid_t object_ptr, dword_t wait_reason,
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(KeWaitForSingleObject, ExportTag::kImplemented | DECLARE_XBOXKRNL_EXPORT(KeWaitForSingleObject,
ExportTag::kThreading | ExportTag::kImplemented | ExportTag::kThreading |
ExportTag::kBlocking); ExportTag::kBlocking | ExportTag::kHighFrequency);
dword_result_t NtWaitForSingleObjectEx(dword_t object_handle, dword_t wait_mode, dword_result_t NtWaitForSingleObjectEx(dword_t object_handle, dword_t wait_mode,
dword_t alertable, dword_t alertable,
@ -859,9 +865,9 @@ dword_result_t NtWaitForSingleObjectEx(dword_t object_handle, dword_t wait_mode,
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(NtWaitForSingleObjectEx, ExportTag::kImplemented | DECLARE_XBOXKRNL_EXPORT(NtWaitForSingleObjectEx,
ExportTag::kThreading | ExportTag::kImplemented | ExportTag::kThreading |
ExportTag::kBlocking); ExportTag::kBlocking | ExportTag::kHighFrequency);
dword_result_t KeWaitForMultipleObjects(dword_t count, lpdword_t objects_ptr, dword_result_t KeWaitForMultipleObjects(dword_t count, lpdword_t objects_ptr,
dword_t wait_type, dword_t wait_reason, dword_t wait_type, dword_t wait_reason,
@ -893,9 +899,9 @@ dword_result_t KeWaitForMultipleObjects(dword_t count, lpdword_t objects_ptr,
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(KeWaitForMultipleObjects, ExportTag::kImplemented | DECLARE_XBOXKRNL_EXPORT(KeWaitForMultipleObjects,
ExportTag::kThreading | ExportTag::kImplemented | ExportTag::kThreading |
ExportTag::kBlocking); ExportTag::kBlocking | ExportTag::kHighFrequency);
dword_result_t NtWaitForMultipleObjectsEx(dword_t count, lpdword_t handles, dword_result_t NtWaitForMultipleObjectsEx(dword_t count, lpdword_t handles,
dword_t wait_type, dword_t wait_mode, dword_t wait_type, dword_t wait_mode,
@ -922,9 +928,9 @@ dword_result_t NtWaitForMultipleObjectsEx(dword_t count, lpdword_t handles,
return result; return result;
} }
DECLARE_XBOXKRNL_EXPORT(NtWaitForMultipleObjectsEx, ExportTag::kImplemented | DECLARE_XBOXKRNL_EXPORT(NtWaitForMultipleObjectsEx,
ExportTag::kThreading | ExportTag::kImplemented | ExportTag::kThreading |
ExportTag::kBlocking); ExportTag::kBlocking | ExportTag::kHighFrequency);
dword_result_t NtSignalAndWaitForSingleObjectEx(dword_t signal_handle, dword_result_t NtSignalAndWaitForSingleObjectEx(dword_t signal_handle,
dword_t wait_handle, dword_t wait_handle,
@ -949,7 +955,7 @@ dword_result_t NtSignalAndWaitForSingleObjectEx(dword_t signal_handle,
} }
DECLARE_XBOXKRNL_EXPORT(NtSignalAndWaitForSingleObjectEx, DECLARE_XBOXKRNL_EXPORT(NtSignalAndWaitForSingleObjectEx,
ExportTag::kImplemented | ExportTag::kThreading | ExportTag::kImplemented | ExportTag::kThreading |
ExportTag::kBlocking); ExportTag::kBlocking | ExportTag::kHighFrequency);
dword_result_t KfAcquireSpinLock(lpdword_t lock_ptr) { dword_result_t KfAcquireSpinLock(lpdword_t lock_ptr) {
// XELOGD( // XELOGD(