Commit Graph

54 Commits

Author SHA1 Message Date
Subv
1784ec58e9 Kernel: Properly implemented svcWaitProcessWideKey and svcSignalProcessWideKey
They work in tandem with guest code to provide synchronization primitives along with svcArbitrateLock/Unlock
2018-04-20 21:04:27 -05:00
Subv
55a515d119 Kernel: Corrected the implementation of svcArbitrateLock and svcArbitrateUnlock.
Switch mutexes are no longer kernel objects, they are managed in userland and only use the kernel to handle the contention case.
Mutex addresses store a special flag value (0x40000000) to notify the guest code that there are still some threads waiting for the mutex to be released. This flag is updated when a thread calls ArbitrateUnlock.

TODO:
* Fix svcWaitProcessWideKey
* Fix svcSignalProcessWideKey
* Remove the Mutex class.
2018-04-20 21:04:25 -05:00
Lioncash
7465782e53 common_funcs: Remove ARRAY_SIZE macro
C++17 has non-member size() which we can just call where necessary.
2018-04-19 22:36:52 -04:00
Hexagon12
f852009f16 Various service name fixes - part 2 (rebased) (#322)
* Updated ACC with more service names

* Updated SVC with more service names

* Updated set with more service names

* Updated sockets with more service names

* Updated SPL with more service names

* Updated time with more service names

* Updated vi with more service names
2018-04-17 11:37:43 -04:00
bunnei
9c4a7bf62b svc: Stub out SetThreadActivity, GetThreadContext. 2018-04-02 23:51:01 -04:00
bunnei
a2d2d8a4a5 svc: Stub GetThreadCoreMask. 2018-03-29 21:23:15 -04:00
N00byKing
488a1500d6 More Warning cleanups 2018-03-19 17:27:04 +01:00
N00byKing
10448f9fb4 Clean Warnings (?) 2018-03-19 17:07:08 +01:00
bunnei
f98e8604f6 svc: Use more correct values for GetInfo MapRegion and NewMapRegion. 2018-03-16 18:32:23 -04:00
bunnei
33130a6652 MemoryState: Add additional memory states and improve naming. 2018-03-16 18:32:21 -04:00
bunnei
b95c68cc67 core: Move process creation out of global state. 2018-03-14 18:42:19 -04:00
bunnei
2a42d92eaa Merge pull request #215 from N00byKing/umapsharedmmry
UnmapSharedMemory
2018-02-25 21:04:24 -08:00
N00byKing
8c93e5e075 (Hopefully) Fix MinGW Build 2018-02-25 13:40:22 +01:00
N00byKing
d199e1167e Add UnmapSharedMemory
C++11 requires spaces on the Identifier

Add inttypes include

clang
2018-02-25 11:38:06 +01:00
mailwl
421cbc7753 Stub more functions 2018-02-22 17:28:15 +03:00
bunnei
1f3b456e6c kernel: Use Scheduler class for threading. 2018-02-18 15:17:16 -05:00
bunnei
37808729fc GetInfo: Implement IsCurrentProcessBeingDebugged. 2018-02-04 12:34:45 -05:00
bunnei
08f68b7306 WaitProcessWideKeyAtomic: Handle case where condition variable was already created. 2018-02-04 12:30:51 -05:00
bunnei
8b217903ae svc: SharedMemory size should be 64-bits and cleanup. 2018-02-03 13:36:54 -05:00
bunnei
a33c1f7915 ArbitrateLock: Assert that requesting_thread is current_thread. 2018-02-03 13:29:18 -05:00
bunnei
87f980d335 hle: Remove Domain and SyncObject kernel objects. 2018-01-24 22:18:54 -05:00
James Rowe
7d396de27a Format: Run the new clang format on everything 2018-01-20 16:45:11 -07:00
David
ff9e364d86 Added CreateSharedMemory & UNIMPLEMENTED() for non existent services. (#113)
* Added svcCreateSharedMemory

* Services which are not implemented now throw UNIMPLEMENTED()

* clang-format

* changed perms to u32

* removed camelcase
2018-01-19 19:35:25 -05:00
bunnei
b9d37a2642 svc: Fix svcGetInfo MapRegionBaseAddr. 2018-01-18 23:44:15 -05:00
Lioncash
733e21ad09 svc: Rename some entries to match their analogue on SwitchBrew
Makes the codebase a little more consistent with regards to available documentation. Also amends the duplicate case where there was a similar entry at 0x72 named ConnectToPort.
2018-01-17 20:38:23 -05:00
Lioncash
26318fc889 svc: Add CreateJitMemory and MapJitMemory svc strings
Makes the table match SwitchBrew for these entries
2018-01-17 20:32:56 -05:00
bunnei
6b806c3759 svc: Clang-format fix. 2018-01-17 12:19:17 -05:00
Subv
20affb0fcf SVC: Correct some return values in svcGetInfo and added TitleId and PrivilegedProcessId stubs.
# Conflicts:
#	src/core/hle/kernel/svc.cpp
2018-01-16 18:50:23 -05:00
bunnei
2942e05c4a Merge pull request #52 from ogniK5377/fsp
added more svcGetInfo pairs for 3.0.0+ support, Changed HEAP_SIZE and TLS_AREA_VADDR. changed mem usage & heap usage stub added, ISelfController, IApplication function stubs. Added SetThreadCoreMask
2018-01-16 18:27:48 -05:00
David Marcec
a3b6a14500 SetThreadCoreMask stub, time to implement fsp 2018-01-16 14:23:53 -08:00
David Marcec
e9101d4a69 Added more svcGetInfo pairs 2018-01-16 14:06:45 -08:00
MerryMage
04e933748c clang-format 2018-01-16 18:05:21 +00:00
bunnei
11592f2def svc: Implement svcMapSharedMemory. 2018-01-14 17:20:55 -05:00
bunnei
17cc648277 yuzu: Update license text to be consistent across project. 2018-01-13 16:22:39 -05:00
bunnei
5c9e5b7bf5 core: Include <algorithm> where used. 2018-01-11 22:36:56 -05:00
bunnei
8fe0b7211f svc: Implement GetSystemTick. 2018-01-11 21:59:31 -05:00
Subv
1e358b5bce svc: Stub ResetSignal and CreateTransferMemory 2018-01-10 23:27:59 -05:00
Subv
1574fb6dc7 svc: Stub SetMemoryAttribute 2018-01-10 23:27:56 -05:00
Subv
8dee2cc16e Threads: Added enum values for the Switch's 4 cpu cores and implemented svcGetInfo(AllowedCpuIdBitmask) 2018-01-10 01:01:55 -05:00
Subv
13240bfcd4 SVC: Fixed WaitSynchronization with multiple handles when none is immediately ready. 2018-01-09 15:02:43 -05:00
Subv
3f8fc78075 SVC: Implemented CancelSynchronization. 2018-01-09 15:02:04 -05:00
Subv
b078e5996d SVC: Fixed WaitSynchronization with multiple handles when at least one of them is ready. 2018-01-09 11:53:50 -05:00
bunnei
3874af4b6e kernel: Rename Semaphore to ConditionVariable. 2018-01-08 21:41:37 -05:00
Subv
6d71843672 Kernel: Actually wake up the requested number of threads in Semaphore::Release.
Also properly keep track of data in guest memory, this fixes managing the semaphore from userland.

It was found that Semaphores are actually Condition Variables, with Release(1) and Release(-1) being equivalent to notify_one and notify_all. We should change the name of the class to reflect this.
2018-01-08 21:12:54 -05:00
Subv
886a49cda8 Kernel: Properly keep track of mutex lock data in the guest memory. This fixes userland locking/unlocking. 2018-01-08 21:12:51 -05:00
Subv
a0e267af83 Kernel: Allow chaining WaitSynchronization calls inside a wakeup callback. 2018-01-08 21:12:49 -05:00
bunnei
b4258e2cf5 svc: Implement svcSignalProcessWideKey. 2018-01-07 16:55:17 -05:00
bunnei
aa3f7a1399 svc: Implement svcWaitProcessWideKeyAtomic. 2018-01-06 16:14:12 -05:00
bunnei
e8320762de svc: Implement WaitSynchronization for a single handle. 2018-01-06 14:34:32 -05:00
bunnei
a9ebcecc40 svc: Refactor LockMutex code to use WaitSynchronization1. 2018-01-06 14:19:28 -05:00