Joel Linn
7e894d10a7
[kernel] Correct status for looked up objects
...
- The guest will check for 0x40000000 and replace it with
0xb7 (ERROR_ALREADY_EXISTS), which is the correct return value.
For example, see:
https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createmutexa
2022-03-08 12:17:57 -06:00
Joel Linn
91f4954967
[kernel] Refactor uses of attribute names
2022-03-08 12:17:57 -06:00
Joel Linn
986dcf4f65
[Base] Check success of sync primitive creation
...
- Mainly use `assert`s, since failure is very rare
- Forward failure of `CreateSemaphore` to guests because it is more easy
to trigger with invalid initial parameters.
2022-03-08 12:17:57 -06:00
gibbed
12ec728989
[Kernel] Use tables for export groups.
2022-01-09 14:16:37 -06:00
gibbed
3ad0a7dab2
[Kernel] Suffix export functions with _entry.
2022-01-09 12:17:03 -06:00
gibbed
600c14b3f0
[xboxknrl] Implement ExTryToAcquireRWLShared.
...
[xboxknrl] Implement ExTryToAcquireReadWriteLockShared.
2022-01-07 10:22:48 -06:00
gibbed
1f9c434b5e
[xboxkrnl] Implement ExAcquireRWLShared.
...
[xboxkrnl] Implement ExAcquireReadWriteLockShared.
2022-01-07 10:22:48 -06:00
gibbed
3162a6435c
[xboxkrnl] Implement ExTryToAcquireRWLExclusive.
...
[xboxkrnl] Implement ExTryToAcquireReadWriteLockExclusive.
2022-01-07 10:22:48 -06:00
gibbed
e795337071
[xboxkrnl] ExReleaseReadWriteLock fixes.
...
[xboxkrnl] ExReleaseReadWriteLock fixes:
- Don't unncessarily double-load lock members.
- Reset readers entry count when lock count becomes negative.
- Properly decrease writers waiting count when writer event fired.
2022-01-07 10:22:48 -06:00
gibbed
b4f35635c5
[xboxkrnl] ExAcquireReadWriteLockExclusive fixes.
...
[xboxkrnl] ExAcquireReadWriteLockExclusive fixes:
- Don't unnecessarily double-load lock count.
- Don't release spin lock before we're done with the lock.
2022-01-07 10:22:48 -06:00
emoose
052ce3d389
[Kernel] Make KeEnter/LeaveCriticalRegion only affect the caller thread
...
Adds a new X_KTHREAD::apc_disable_count field at 0xB0 into X_KTHREAD based on where 360 kernel seems to store it, and made CriticalRegion funcs act on that, instead of locking things between all threads, and changes DeliverAPCs to check that field before running the APCs.
XThread::LockApc/UnlockApc were also updated too as those previously called into EnterCrit/LeaveCrit to work, but AFAIK the code that uses LockApc/UnlockApc does have an actual need for locking between threads, so changed them to work on XThread::global_critical_region_ directly instead.
2021-06-25 23:11:14 -05:00
gibbed
1513dd235b
[Kernel] Code reentrance for guest fibers.
...
[Kernel] Code reentrance using exceptions for guest fibers.
2020-12-05 14:17:33 -06:00
gibbed
164aa8e8ca
[Kernel] Scope object type enum.
2020-11-22 20:34:07 -06:00
Triang3l
a319617185
[Kernel] Thread affinity cleanup
2020-11-14 18:09:47 +03:00
Gliniak
2dc6b0b2ad
[Kernel/Thread] Added missing paramteter to KeSetAffinityThread
2020-11-14 17:48:30 +03:00
Gliniak
ab2b9393c2
[Kernel] Implemented NtQueueApcThread
2020-07-12 08:56:15 -05:00
gibbed
a48bb71c2f
Overhaul logging.
2020-04-07 16:09:41 -05:00
Silent
05ef022fd7
[Kernel] Do not retain handle in ExCreateThread
...
Closing the thread handle should delete the thread object
if it's finished. When this handle was retained, closing the handle
left a lingering handle reference and thus this XThread would leak
2019-11-30 20:08:30 -06:00
Triang3l
2507f1a819
[Memory] TranslateVirtual in shim and strings
2019-08-14 10:31:11 +03:00
gibbed
7d6d732999
[Kernel] Of course I forget to commit another local change.
2019-08-04 11:44:18 -05:00
gibbed
1ebf7bb484
[Kernel] Implement KeTryToAcquireSpinLockAtRaisedIrql. Maybe correctly.
2019-08-04 11:36:49 -05:00
gibbed
64b2be92d6
[Kernel] Retain handle in ExCreateThread. Game closing a created thread's handle shouldn't result in its handle being freed.
2018-12-03 12:09:24 -06:00
gibbed
dcde6308bb
[Kernel] Simplify KeWaitForMultipleObjects.
2018-12-03 12:08:22 -06:00
gibbed
bd45a5defd
[Kernel] Fix timeout in NtWaitForMultipleObjectsEx.
2018-11-25 11:06:57 -06:00
gibbed
4dfe83af6c
[Kernel] Fix threading issues caused by direct use of exports.
2018-11-25 05:08:16 -06:00
gibbed
3baf668055
[Kernel] Implement ExAcquireReadWriteLockExclusive, ExReleaseReadWriteLock.
2018-11-24 19:04:42 -06:00
Margen67
896ac4a682
Update documentation.
...
- Convert http to https, provide archive link when possible.
- Made CPU-JIT.png more readable on dark themes;
Added a white background so there isn't black text on a black
background.
2018-11-22 09:20:09 -06:00
gibbed
683de76b9b
[Kernel] Remove stray logging in NtReleaseMutant.
2018-11-21 18:07:46 -06:00
gibbed
7ae0e2b8e5
[Kernel] Fix Travis whining.
2018-11-20 16:05:45 -06:00
gibbed
5b776b99da
[Kernel] Move xboxkrnl_threading to new shim convention.
2018-11-20 15:49:06 -06:00
gibbed
394105d359
[CPU/Kernel] Cleanup and rework of how kernel exports are declared.
2018-11-20 13:03:17 -06:00
Dr. Chat
dcca5f587e
[Kernel] ExInitializeReadWriteLock
2018-05-07 18:46:15 -05:00
Dr. Chat
10c8413acf
[Kernel] Flag a few frequently-used functions as kHighFrequency
2018-05-05 18:44:08 -05:00
Svyatoslav
2f1cf1452d
xboxkrnl_threading.cc: PVS-Studio: fixed return value.
2017-06-27 12:16:29 +03:00
Dr. Chat
c538671c24
Kernel: Wrap new objects in object_ref to avoid a memory leak!
2017-02-03 20:57:08 -06:00
Dr. Chat
bd6bf16bd1
New flag: disable_global_lock - Disables global lock usage in guest code.
2016-01-13 19:40:00 -06:00
Ben Vanik
c8b544ffd4
Fixing casts. This is why I need tests.
2016-01-01 12:45:06 -08:00
Ben Vanik
b02ca62388
Fixing most remaining C++ warnings in clang.
2016-01-01 18:37:33 +00:00
Dr. Chat
764dcba75a
Update TLS comments
2015-12-29 13:10:01 -08:00
Dr. Chat
eee0bb070c
Store thread TLS in guest memory rather than using host APIs
2015-12-29 13:09:58 -08:00
Dr. Chat
4cbe219476
Don't update the dispatch header in KetSetEvent/KeResetEvent (threading issues)
2015-12-29 13:09:46 -08:00
Dr. Chat
b8d4f26e46
Fix NtWaitForMultipleObjectsEx definition
2015-12-29 12:32:49 -08:00
Dr. Chat
87cdce1440
Export kBlocking tag
2015-12-29 12:32:48 -08:00
Ben Vanik
b9326be93c
Merge pull request #447 from DrChat/excreatethread_ptr_fix
...
Fix ExCreateThread returning a handle when game requests a pointer
2015-11-03 20:01:12 -08:00
Dr. Chat
b628577855
Implemented KeSetCurrentStackPointers
2015-11-01 21:56:40 -06:00
Dr. Chat
cee0e582c2
Remove workarounds for handles passed into Ke* functions.
2015-10-31 10:31:35 -05:00
Dr. Chat
4d22c21688
ExCreateThread: Flag 0x80 indicates we should return the thread pointer, not handle.
2015-10-31 10:28:53 -05:00
Dr. Chat
c33e95981b
Formatting.
2015-09-25 18:46:50 -05:00
Dr. Chat
71818a3129
Convert NtCreateEvent to new format
2015-09-25 18:39:14 -05:00
Ben Vanik
e5fbf840d2
Shuffling kernel/.
2015-09-06 18:07:52 -07:00