bunnei
11597c4ab2
Merge pull request #454 from Subv/signal_processwide
...
Kernel/SVC: Signal the highest priority threads first in svcSignalProcessWideKey
2018-05-23 10:28:23 -04:00
bunnei
613a6d661e
Merge pull request #457 from Subv/mutex_waiters
...
Mutex: Do not assert when the mutex waiting threads list isn't empty on mutex release.
2018-05-20 23:44:44 -04:00
Subv
fe463e2a1c
Mutex: Do not assert when the mutex waiting threads list isn't empty on mutex release.
...
A thread may own multiple mutexes at the same time, and only release one of them while other threads are waiting for the other mutexes.
2018-05-20 14:41:58 -05:00
Subv
e3e8902d40
Kernel/SVC: Signal the highest priority threads first in svcSignalProcessWideKey.
2018-05-19 16:58:30 -05:00
Subv
8ce8160ce3
Kernel/Threads: Reschedule the proper core when operating on that core's threads.
2018-05-19 16:57:44 -05:00
Subv
8935ca8e11
SVC: Removed unused WaitSynchronization1 function
2018-05-19 16:56:33 -05:00
David Marcec
75bd5bf8be
Added RequestWithContext & ControlWithContext
2018-05-17 14:03:52 -07:00
bunnei
ce7d89cb0e
thread: Rename mask to affinity_masks.
2018-05-10 19:34:53 -04:00
bunnei
d96be9b56b
thread: Support core change on ResumeFromWait and improve ChangeCore.
2018-05-10 19:34:53 -04:00
bunnei
eabfdfe4ec
scheduler: Protect scheduling functions with a global mutex.
2018-05-10 19:34:52 -04:00
bunnei
82bb8701ea
thread: Initialize ideal_core and mask members.
2018-05-10 19:34:52 -04:00
bunnei
5a5850af69
threading: Reschedule only on cores that are necessary.
2018-05-10 19:34:52 -04:00
bunnei
9e559ceb09
svc: Implement GetThreadCoreMask and SetThreadCoreMask.
2018-05-10 19:34:51 -04:00
bunnei
922b5c326e
thread: Implement ChangeCore function.
2018-05-10 19:34:50 -04:00
bunnei
7b6dd22605
svc: SignalProcessWideKey should apply to all cores.
2018-05-10 19:34:49 -04:00
bunnei
6c4f161ba2
svc: Implement GetCurrentProcessorNumber.
2018-05-10 19:34:49 -04:00
bunnei
44c565aeca
core: Implement multicore support.
2018-05-10 19:34:46 -04:00
bunnei
618cce3172
Merge pull request #431 from lioncash/fmt
...
general: Make formatting of logged hex values more straightforward
2018-05-02 15:24:41 -04:00
Lioncash
1b310cbb3a
general: Make formatting of logged hex values more straightforward
...
This makes the formatting expectations more obvious (e.g. any zero padding specified
is padding that's entirely dedicated to the value being printed, not any pretty-printing
that also gets tacked on).
2018-05-02 09:49:36 -04:00
bunnei
5e4d01f80c
ipc: Add support for PopIpcInterface() method.
...
- This can be used for domain objects as inputs to service functions.
2018-05-01 21:57:44 -04:00
David
3a3b58df8b
GetSharedFontInOrderOfPriority ( #381 )
...
* GetSharedFontInOrderOfPriority
* Update pl_u.cpp
* Ability to use ReadBuffer and WriteBuffer with different buffer indexes, fixed up GetSharedFontInOrderOfPriority
* switched to NGLOG
* Update pl_u.cpp
* Update pl_u.cpp
* language_code is actually language code and not index
* u32->u64
* final cleanups
2018-05-01 16:28:36 -04:00
Lioncash
3873211738
core_timing: Namespace all functions and constants in core_timing's header
...
All of these variables and functions are related to timings and should be within the namespace.
2018-04-30 03:32:59 -04:00
Lioncash
d1e3e0eb42
string_util: Remove StringFromFormat() and related functions
...
Given we utilize fmt, we don't need to provide our own functions for formatting anymore
2018-04-29 18:52:33 -04:00
Lioncash
44d2f427d4
core: Replace usages of LOG_GENERIC with new fmt-capable equivalents
2018-04-27 11:57:52 -04:00
Lioncash
324ee31fc3
general: Convert assertion macros over to be fmt-compatible
2018-04-27 10:04:02 -04:00
Lioncash
871e6c0041
kernel/shared_memory: Remove unnecessary semicolon at end of ConvertPermissions()
...
Functions don't need to be terminated by semicolons.
2018-04-25 20:32:16 -04:00
Lioncash
bd9414dd31
kernel: Migrate logging macros to fmt-compatible ones
2018-04-25 20:32:09 -04:00
bunnei
5ff201a288
Merge pull request #370 from Subv/sync_primitives
...
Kernel: Reworked the new kernel synchronization primitives.
2018-04-23 16:33:00 -04:00
Subv
329bec6dbd
Kernel: Implemented mutex priority inheritance.
...
Verified with a hwtest and implemented based on reverse engineering.
Thread A's priority will get bumped to the highest priority among all the threads that are waiting for a mutex that A holds.
Once A releases the mutex and ownership is transferred to B, A's priority will return to normal and B's priority will be bumped.
2018-04-23 11:23:44 -05:00
Subv
4be07d1090
Kernel: Use 0x2C as default main thread priority for homebrew and lone NRO/NSOs
2018-04-20 21:04:35 -05:00
Subv
106d31e8c3
Qt: Update the WaitTree widget to show info about the current mutex of each thread.
2018-04-20 21:04:34 -05:00
Subv
f5a2b1920b
Kernel: Remove unused ConditionVariable class.
2018-04-20 21:04:33 -05:00
Subv
e499b48f97
Kernel: Remove old and unused Mutex code.
2018-04-20 21:04:32 -05:00
Subv
fcd7cbe65a
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
4e47dd5b59
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
5860b9f4ce
resource_limit: Make ResourceTypes an enum class
...
Prevents enum identifiers from leaking into the surrounding scope.
2018-04-20 19:41:45 -04:00
Lioncash
c9f5ae4fcc
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
4c462c91bd
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
3260473ce8
vm_manager: Increase GetTotalMemoryUsage value.
...
- Gets Binding of Isaac running.
2018-04-14 22:04:10 -04:00
bunnei
e71cfbce72
svc: Stub out SetThreadActivity, GetThreadContext.
2018-04-02 23:51:01 -04:00
bunnei
1eeef530e5
shared_memory: Remove incorrect 3ds-specific check.
2018-04-02 23:50:58 -04:00
bunnei
52c5bc4642
hle_ipc, fsp_srv: Cleanup logging.
2018-03-31 23:30:00 -04:00
bunnei
6d21b8cdea
hle_ipc: Do not ensure write buffer size.
2018-03-31 16:06:46 -04:00
bunnei
36cdd5a39c
memory: Fix stack region.
2018-03-31 16:06:45 -04:00
bunnei
86f0e841d8
svc: Stub GetThreadCoreMask.
2018-03-29 21:23:15 -04:00
N00byKing
d3bdad2aaa
Clang Fixes
2018-03-19 17:53:35 +01:00
N00byKing
8d34c0d2a0
More Warning cleanups
2018-03-19 17:27:04 +01:00
N00byKing
1212e9e231
Clean Warnings (?)
2018-03-19 17:07:08 +01:00
bunnei
7750edae39
hle_ipc: Add SleepClientThread to block current thread within HLE routines.
2018-03-18 20:56:34 -04:00
bunnei
01d72e813e
hle_ipc: Use shared_ptr instead of unique_ptr to allow copies.
2018-03-18 20:56:33 -04:00
bunnei
479400acc8
hle_ipc: Remove GetPointer(..) usage with WriteToOutgoingCommandBuffer.
2018-03-18 20:56:33 -04:00
bunnei
d6c27e6b28
thread: Add THREADSTATUS_WAIT_HLE_EVENT, remove THREADSTATUS_WAIT_ARB.
2018-03-18 20:56:32 -04:00
bunnei
dd2e72f1aa
process: MirrorMemory should use MemoryState::Mapped.
2018-03-16 19:24:54 -04:00
bunnei
d7bb09afe7
process: Unmap previously allocated heap.
2018-03-16 18:32:25 -04:00
bunnei
256153c50c
arm_interface: Support unmapping previously mapped memory.
2018-03-16 18:32:24 -04:00
bunnei
a0b00fe2d1
svc: Use more correct values for GetInfo MapRegion and NewMapRegion.
2018-03-16 18:32:23 -04:00
bunnei
a26561ce20
kernel: Move stack region outside of application heap.
2018-03-16 18:32:23 -04:00
bunnei
67bac363d8
process: Fix stack memory state.
2018-03-16 18:32:21 -04:00
bunnei
29bda49fc0
MemoryState: Add additional memory states and improve naming.
2018-03-16 18:32:21 -04:00
bunnei
f16763ed52
core: Move process creation out of global state.
2018-03-14 18:42:19 -04:00
bunnei
32f3523ce1
Merge pull request #216 from Subv/savedata
...
Implemented the SaveData archive and MountSaveData.
2018-03-01 22:14:31 -05:00
Subv
a9c51be95e
Kernel: Store the program id in the Process class instead of the CodeSet class.
...
There may be many CodeSets per Process, so it's wasteful and overcomplicated to store the program id in each of them.
2018-03-01 19:03:53 -05:00
Jules Blok
29a5203a2a
thread: Clear the process list on shutdown.
2018-02-27 17:13:39 +01:00
bunnei
e1866e69e2
Merge pull request #207 from mailwl/duplicatesession
...
IPC: add domain header to response if only it exists in request
2018-02-26 20:52:56 -08:00
bunnei
1f73bf3fb0
Merge pull request #215 from N00byKing/umapsharedmmry
...
UnmapSharedMemory
2018-02-25 21:04:24 -08:00
N00byKing
ac2232b9cf
(Hopefully) Fix MinGW Build
2018-02-25 13:40:22 +01:00
N00byKing
11cef9ba72
Add UnmapSharedMemory
...
C++11 requires spaces on the Identifier
Add inttypes include
clang
2018-02-25 11:38:06 +01:00
mailwl
8f256914fc
Stub more functions
2018-02-22 17:28:15 +03:00
mailwl
dadb6c6e50
Add warning if Domain request has no domain message header
2018-02-20 22:51:54 +03:00
mailwl
2ba8b89864
Fix: change check for domain order and existance of domain message header
2018-02-20 21:59:58 +03:00
mailwl
e05f10cae8
IPC: add domain header to response if only it exists in request
2018-02-20 19:27:49 +03:00
bunnei
87335e8404
scheduler: Cleanup based on PR feedback.
2018-02-19 16:46:42 -05:00
bunnei
539977f39b
kernel: Use Scheduler class for threading.
2018-02-18 15:17:16 -05:00
bunnei
650f49fab2
kernel: Add Scheduler, which encapsulates the scheduling loading from Thread module.
2018-02-18 14:58:40 -05:00
bunnei
0b8907958f
kernel: Remove unused address_arbiter code.
2018-02-18 14:46:11 -05:00
Subv
fbb0ef851c
Kernel/IPC: Add a small delay after each SyncRequest to prevent thread starvation.
...
Ported from citra PR #3091
The delay specified here is from a Nintendo 3DS, and should be measured in a Nintendo Switch.
This change is enough to prevent Puyo Puyo Tetris's main thread starvation.
2018-02-18 13:25:48 -05:00
mailwl
e86ec16ee7
Service/hid: stub some functions
2018-02-16 06:15:05 +03:00
bunnei
287bcf18e6
shared_memory: Remove some checks.
2018-02-14 22:24:06 -05:00
bunnei
030b763b5d
Merge pull request #188 from bunnei/refactor-buffer-descriptor
...
Refactor IPC buffer descriptor interface
2018-02-14 18:31:53 -05:00
bunnei
9bd160723a
hle_ipc: Remove const from WriteBuffer size.
2018-02-14 14:21:10 -05:00
Lioncash
321765d0b4
thread: Silence formatting specifier warnings
2018-02-14 01:50:14 -05:00
Lioncash
a708fd7a6d
vm_manager: Silence formatting specifier warnings
2018-02-14 01:50:14 -05:00
bunnei
289e29163b
hle_ipc: Add GetReadBufferSize and check write buffer size.
2018-02-14 00:14:17 -05:00
bunnei
f0e350f3bb
hle_ipc: Add helper functions for reading and writing buffers.
2018-02-13 23:54:07 -05:00
bunnei
ac83b7c57f
hle_ipc: Add helper functions for reading and writing buffers.
2018-02-13 23:26:03 -05:00
bunnei
41042e7b81
mutex: Update hasWaiters on release.
2018-02-05 21:54:10 -05:00
bunnei
23c46db6f7
GetInfo: Implement IsCurrentProcessBeingDebugged.
2018-02-04 12:34:45 -05:00
bunnei
37967da1f2
WaitProcessWideKeyAtomic: Handle case where condition variable was already created.
2018-02-04 12:30:51 -05:00
bunnei
4a19b608fd
svc: SharedMemory size should be 64-bits and cleanup.
2018-02-03 13:36:54 -05:00
bunnei
9892a119da
ArbitrateLock: Assert that requesting_thread is current_thread.
2018-02-03 13:29:18 -05:00
shinyquagsire23
cd0befbd05
shared_memory: Only mark addresses as invalid if they are within the heap
2018-01-29 23:38:56 -07:00
bunnei
a36f4860f9
Merge pull request #148 from MerryMage/feature/special-memory
...
memory: Replace all memory hooking with Special regions
2018-01-27 15:20:53 -05:00
MerryMage
7a23a53396
memory: Replace all memory hooking with Special regions
2018-01-27 15:16:39 +00:00
bunnei
c943b30b0a
server_session: Fix scenario where all domain handlers are closed.
2018-01-24 22:24:16 -05:00
bunnei
f328cb2c7c
hle: Rename RequestBuilder to ResponseBuilder.
2018-01-24 22:24:10 -05:00
bunnei
2b07c87f0c
ipc_helpers: Make interface domain agnostic and add header validation.
2018-01-24 22:19:01 -05:00
bunnei
a3aadaea60
hle: Integrate Domain handling into ServerSession.
2018-01-24 22:18:56 -05:00
bunnei
4fabdf77d7
hle: Remove Domain and SyncObject kernel objects.
2018-01-24 22:18:54 -05:00
bunnei
2ab0f638f0
handle_table: Remove ConvertSessionToDomain.
2018-01-24 22:18:51 -05:00
James Rowe
ea88c44eb8
Format: Run the new clang format on everything
2018-01-20 16:45:11 -07:00
David
61a92c7347
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
River City Ransomware
39827d573a
Fixes some cast warnings, partial port of citra #3064 ( #106 )
...
* Fixes some cast warnings, partially fixes citra #3064
* Converted casts to uint32_t to u32
* Ran clang-format
2018-01-19 18:01:41 -05:00
bunnei
94483465ad
svc: Fix svcGetInfo MapRegionBaseAddr.
2018-01-18 23:44:15 -05:00
bunnei
c268244812
svc: Add additional fields to MemoryInfo struct.
2018-01-18 23:37:54 -05:00
gdkchan
90b697db30
Stub PopLaunchParameter and implement Buffer C Descriptors reading on hle_ipc ( #96 )
...
* Stub PopLaunchParameter and implement Buffer C Descriptors reading
* Address PR feedback
* Ensure we push a u64 not a size_t
* Fix formatting
2018-01-18 14:54:34 -05:00
Lioncash
e396daeb9d
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
9453658987
svc: Add CreateJitMemory and MapJitMemory svc strings
...
Makes the table match SwitchBrew for these entries
2018-01-17 20:32:56 -05:00
bunnei
11c878023f
svc: Clang-format fix.
2018-01-17 12:19:17 -05:00
bunnei
0d1c6f492e
hle_ipc: Clang format.
2018-01-17 11:37:26 -05:00
bunnei
ce1626b80e
ipc: Implement domain command CloseVirtualHandle.
2018-01-17 01:20:10 -05:00
Subv
6b3510cca6
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
Subv
24a605cc10
SVC: Add 4.0.0+ comment to GetInfoType enum values.
2018-01-16 18:44:39 -05:00
Subv
911ea4451e
IPC: Push domain objects as move handles when not in a domain.
2018-01-16 18:42:08 -05:00
bunnei
227f2f7664
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
18295b0325
SetThreadCoreMask stub, time to implement fsp
2018-01-16 14:23:53 -08:00
David Marcec
eb1ddebb18
Added more svcGetInfo pairs
2018-01-16 14:06:45 -08:00
MerryMage
41bfd994f6
clang-format
2018-01-16 18:05:21 +00:00
bunnei
e09f123ff7
shared_memory: Minor fixes and cleanup.
2018-01-14 17:20:55 -05:00
bunnei
e9e51c7181
svc: Implement svcMapSharedMemory.
2018-01-14 17:20:55 -05:00
bunnei
99d1279753
kernel: Increase default stack size to 64K.
2018-01-14 17:20:55 -05:00
bunnei
182548ec86
yuzu: Update license text to be consistent across project.
2018-01-13 16:22:39 -05:00
bunnei
7e02ba1ae3
core: Include <algorithm> where used.
2018-01-11 22:36:56 -05:00
bunnei
86a8e32471
core: Fix recent GCC build breaks.
2018-01-11 22:24:09 -05:00
bunnei
e2db6b98fe
svc: Implement GetSystemTick.
2018-01-11 21:59:31 -05:00
Subv
8923c80127
IPC: Corrected some definitions for the buffer C descriptor flags.
2018-01-10 23:28:02 -05:00
Subv
edeb55d78b
svc: Stub ResetSignal and CreateTransferMemory
2018-01-10 23:27:59 -05:00
Subv
377e2a79b5
svc: Stub SetMemoryAttribute
2018-01-10 23:27:56 -05:00
Subv
9362706e1d
Threads: Added enum values for the Switch's 4 cpu cores and implemented svcGetInfo(AllowedCpuIdBitmask)
2018-01-10 01:01:55 -05:00
Subv
db71b23c80
SVC: Fixed WaitSynchronization with multiple handles when none is immediately ready.
2018-01-09 15:02:43 -05:00
Subv
607a46a662
SVC: Implemented CancelSynchronization.
2018-01-09 15:02:04 -05:00
Subv
5685c764e4
ErrorCodes: Updated the InvalidHandle and Timeout kernel error codes.
2018-01-09 12:05:10 -05:00
Subv
84d05d5b6c
SVC: Fixed WaitSynchronization with multiple handles when at least one of them is ready.
2018-01-09 11:53:50 -05:00
bunnei
7a59da7834
kernel: Rename Semaphore to ConditionVariable.
2018-01-08 21:41:37 -05:00
bunnei
a689a33995
mutex: Remove unused call to VerifyGuestState.
2018-01-08 21:12:56 -05:00
Subv
96e2acfa8f
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
2ca36ac394
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
ac8f05943b
Kernel: Allow chaining WaitSynchronization calls inside a wakeup callback.
2018-01-08 21:12:49 -05:00
B3n30
1b2aa3780d
CoreTiming: Reworked CoreTiming (cherry-picked from Citra #3119 )
...
* CoreTiming: New CoreTiming; Add Test for CoreTiming
2018-01-08 19:10:25 -05:00
Subv
347ab620b5
IPC: Add functions to read the input move/copy objects from an IPC request.
2018-01-07 17:11:51 -05:00
Subv
eda468e4fb
IPC: Don't attempt to read the command buffer if it holds a Close request.
2018-01-07 17:11:49 -05:00
Subv
fd93b1e0ef
IPC Cleanup: Remove 3DS-specific code and translate copy, move and domain objects in IPC requests.
...
Popping objects from the buffer is still not implemented.
2018-01-07 17:11:47 -05:00
Subv
6a6013d4c3
IPC: Skip the entire u64 of the command id when receiving an IPC request.
...
Service code now doesn't have to deal with this.
2018-01-07 17:11:45 -05:00
Subv
d6a5e0b61b
IPC: Use the correct size when pushing raw data to the command buffer and fixed pushing domain objects.
...
Domain object ids are always stored immediately after the raw data.
2018-01-07 17:11:43 -05:00
bunnei
1aac4945d2
svc: Implement svcSignalProcessWideKey.
2018-01-07 16:55:17 -05:00
bunnei
d15b38d32c
semaphore: More changes for Switch.
2018-01-07 16:52:23 -05:00
bunnei
0459eb07c9
wait_object: Refactor to allow waking up a single thread.
2018-01-07 16:33:41 -05:00
bunnei
2720d550b7
svc: Implement svcWaitProcessWideKeyAtomic.
2018-01-06 16:14:12 -05:00
bunnei
2f66f2210d
semaphore: Updates for Switch.
2018-01-06 15:55:40 -05:00
bunnei
260149fc9b
svc: Implement WaitSynchronization for a single handle.
2018-01-06 14:34:32 -05:00
bunnei
25c27e356e
svc: Refactor LockMutex code to use WaitSynchronization1.
2018-01-06 14:19:28 -05:00
bunnei
dc6b80d997
svc: Add missing string_util include.
2018-01-04 19:45:15 -05:00
bunnei
b055ea2699
arm: Remove SkyEye/Dyncom code that is ARMv6-only.
2018-01-02 22:24:12 -05:00
bunnei
5739484470
vm_manager: Use a more reasonable MAX_ADDRESS size.
2018-01-02 21:37:56 -05:00
bunnei
0d63f6dc66
svc: Remove unnecessary "svc" prefix to naming scheme.
2018-01-02 20:47:26 -05:00
bunnei
b328c577ef
hle: Move SVC code to kernel namespace.
2018-01-02 20:40:30 -05:00
bunnei
6a6de01d43
vm_manager: Stub out a bunch of interfaces used by svcGetInfo.
2018-01-01 15:59:31 -05:00
bunnei
4728cc141a
core/video_core: Fix a bunch of u64 -> u32 warnings.
2018-01-01 15:40:35 -05:00
bunnei
37d55a0317
svc: Implement svcExitProcess.
2018-01-01 14:38:34 -05:00
bunnei
16c66e09cc
svc: Implement svcLockMutex.
2018-01-01 14:02:26 -05:00
bunnei
fba61b93c7
kernel: Add ObjectAddressTable class.
2018-01-01 13:25:37 -05:00
bunnei
57d3544f96
thread: Keep track of the initially created handle.
...
This is kinda crufty, but we need it for now to update guest state variables.
2017-12-31 17:23:36 -05:00
bunnei
10022dc332
errors: Define missing kernel error codes.
2017-12-31 15:59:00 -05:00
bunnei
3af6ad6bb9
svc: Implement svcUnmapMemory.
2017-12-31 15:22:49 -05:00
bunnei
3fc608b040
thread: Main thread should set thread handle to reg 1.
2017-12-30 12:10:58 -05:00
bunnei
da4bd90980
thread: Remove THUMB mode flag.
2017-12-30 12:08:26 -05:00
bunnei
d8a3de102e
thread: Main thread should be ready by default, all others dormant.
2017-12-30 12:05:10 -05:00
bunnei
78531342a4
kernel: Various 64-bit fixes in memory/process/thread
2017-12-29 13:27:58 -05:00
bunnei
9d04a45a90
kernel: Fix implementation of ConvertSessionToDomain.
2017-12-29 00:36:22 -05:00
bunnei
8331a996d6
kernel: Add basic support for Domain object.
2017-12-28 23:30:21 -05:00
bunnei
8fdafee314
kernel: Add SyncObject primitive, use it for ClientSession.
2017-12-28 23:12:28 -05:00
bunnei
e74563e0d0
process: Add method to mirror a memory region.
2017-12-28 21:35:49 -05:00
bunnei
1edc9cc327
service: Return proper result code for IPC::CommandType::Close.
2017-10-31 19:30:05 -04:00
bunnei
714dd3da6d
hle: Use Switch formatted result codes.
2017-10-31 19:26:11 -04:00
bunnei
bf69f3d1eb
hle: Fix QueryMemory response for MemoryInfo.
2017-10-19 23:00:46 -04:00
bunnei
a636b779e7
hle_ipc: Only copy necessary fields for outgoing command buffer.
2017-10-18 21:39:48 -04:00
bunnei
f599769c3c
hle_ipc: Parse out buffer X/A/B/B descriptors from incoming command buffer.
2017-10-18 21:38:01 -04:00
bunnei
be299c7636
hle: Implement ConvertSessionToDomain, various cleanups.
2017-10-15 01:24:22 -04:00
bunnei
2ea8867549
hle: Initial implementation of NX service framework and IPC.
2017-10-14 22:18:42 -04:00
bunnei
775cf60729
Merge remote-tracking branch 'upstream/master' into nx
...
# Conflicts:
# src/core/CMakeLists.txt
# src/core/arm/dynarmic/arm_dynarmic.cpp
# src/core/arm/dyncom/arm_dyncom.cpp
# src/core/hle/kernel/process.cpp
# src/core/hle/kernel/thread.cpp
# src/core/hle/kernel/thread.h
# src/core/hle/kernel/vm_manager.cpp
# src/core/loader/3dsx.cpp
# src/core/loader/elf.cpp
# src/core/loader/ncch.cpp
# src/core/memory.cpp
# src/core/memory.h
# src/core/memory_setup.h
2017-10-09 23:56:20 -04:00
bunnei
e36ccd5ff1
loader: Various improvements for NSO/NRO loaders.
2017-10-09 21:39:32 -04:00
bunnei
14389f5d6d
Merge pull request #2977 from Subv/shmem_create
...
SharedMemory: Don't take over and unmap the source memory block when creating a shared memory, just reference it
2017-10-03 16:21:49 -04:00
Subv
25a5ce9e75
Kernel/SharedMemory: Don't take over and unmap the source memory block when creating a shared memory, just reference it.
...
Also reference the right offset into the backing block for the requested address.
2017-10-02 15:16:16 -05:00
Sebastian Valle
cbf57de4e5
Merge pull request #2971 from Subv/per_process_memops
...
Memory: Add overloads for ReadBlock and WriteBlock that operate on a specific process.
2017-10-01 14:44:06 -05:00
Subv
141da6b667
Kernel/Thread: Added a helper function to get a thread's command buffer VAddr.
2017-10-01 14:18:35 -05:00
bunnei
6d3b6e0041
nso: Refactor and allocate .bss section.
2017-09-30 14:33:58 -04:00
bunnei
39308848e3
process: Support loading multiple codesets.
2017-09-30 14:33:11 -04:00
bunnei
6cfc867d93
kernel: Various threading fixes to support 64-bit addressing.
2017-09-30 14:28:54 -04:00
bunnei
e5731e94d6
core: Various changes to support 64-bit addressing.
2017-09-30 14:28:54 -04:00
Sebastian Valle
2e30398e7a
Merge pull request #2967 from Subv/thread_wakeup_callbacks
...
Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken
2017-09-30 09:12:18 -05:00
Huw Pascoe
da1c8d1522
Fixed type conversion ambiguity
2017-09-30 09:34:35 +01:00
Subv
a0054d695e
Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken.
...
This change makes for a clearer (less confusing) path of execution in the scheduler, now the code to execute when a thread awakes is closer to the code that puts the thread to sleep (WaitSynch1, WaitSynchN). It also allows us to implement the special wake up behavior of ReplyAndReceive without hacking up WaitObject::WakeupAllWaitingThreads.
If savestates are desired in the future, we can change this implementation to one similar to the CoreTiming event system, where we first register the callback functions at startup and assign their identifiers to the Thread callback variable instead of directly assigning a lambda to the wake up callback variable.
2017-09-28 11:53:32 -05:00
Subv
2e78c05d91
Kernel/Thread: Allow specifying which process a thread belongs to when creating it.
...
Don't automatically assume that Thread::Create will only be called when the parent process is currently scheduled. This assumption will be broken when applets or system modules are loaded.
2017-09-26 17:40:49 -05:00
MerryMage
6b8ad273fc
memory: Add GetCurrentPageTable/SetCurrentPageTable
...
Don't expose Memory::current_page_table as a global.
2017-09-24 22:42:42 +01:00
B3n30
ccdc31ca9f
Merge pull request #2842 from Subv/switchable_page_table
...
Kernel/Memory: Give each process its own page table and allow switching the current page table upon reschedule
2017-09-15 22:41:45 +02:00
Subv
9200465e55
Kernel/Threads: Don't clear the CPU instruction cache when performing a context switch from an idle thread into a thread in the same process.
...
We were unnecessarily clearing the cache when going from Process A -> Idle -> Process A, this caused extreme performance regressions.
2017-09-15 14:26:15 -05:00
Subv
71281c2114
Kernel/Memory: Changed GetPhysicalPointer so that it doesn't go through the current process' page table to obtain a pointer.
2017-09-15 14:26:13 -05:00
Subv
23ad87098d
Kernel/Memory: Switch the current page table when a new process is scheduled.
2017-09-10 15:14:31 -05:00
Subv
36100ec791
Kernel/Memory: Give each Process its own page table.
...
The loader is in charge of setting the newly created process's page table as the main one during the loading process.
2017-09-10 15:13:41 -05:00
James Rowe
35e185309b
Merge pull request #2839 from Subv/global_kernel_lock
...
Kernel/HLE: Use a mutex to synchronize access to the HLE kernel state between the cpu thread and any other possible threads that might touch the kernel (network thread, etc).
2017-08-23 18:17:44 -06:00
bunnei
add21dee2f
Merge pull request #2893 from Subv/not_schedule_main_thread
...
Kernel/Threads: Don't immediately switch to the new main thread when loading a new process.
2017-08-22 17:45:47 -04:00
Subv
9cf64ca2cf
Kernel/HLE: Use a mutex to synchronize access to the HLE kernel state between the cpu thread and any other possible threads that might touch the kernel (network thread, etc).
...
This mutex is acquired in SVC::CallSVC, ie, as soon as the guest application enters the HLE kernel, and should be acquired by the aforementioned threads before modifying kernel structures.
2017-08-22 09:30:55 -05:00
Subv
733dfe220e
Kernel/Threads: Don't immediately switch to the new main thread when loading a new process.
...
This is necessary for loading multiple processes at the same time.
The main thread will be automatically scheduled when necessary once the scheduler runs.
2017-08-21 20:54:29 -05:00
Subv
f94bd67a0d
Warnings: Add UNREACHABLE macros to switches that contemplate all possible values.
2017-08-21 08:34:28 -05:00
Weiyi Wang
c40c9bf285
Merge pull request #2799 from yuriks/virtual-cached-range-flush
...
Add address conversion functions returning optional, Add function to flush virtual region from rasterizer cache
2017-07-22 10:15:52 +03:00
Sebastian Valle
4f7e8c6f1e
Merge pull request #2793 from Subv/replyandreceive
...
Kernel/SVC: Partially implemented svcReplyAndReceive
2017-06-29 17:05:22 -05:00
Subv
4a8de6bb00
Kernel/SVC: Pass the current thread as a parameter to ClientSession::SendSyncRequest.
2017-06-29 12:30:34 -05:00
Subv
44f4737f99
Kernel/Sessions: Clean up the list of pending request threads of a session when the client endpoint is closed.
2017-06-25 23:38:29 -05:00
Subv
d7538409fb
Kernel/ServerSession: Keep track of which threads have issued sync requests.
2017-06-25 14:47:25 -05:00
Yuri Kunde Schlesner
afa851d0a4
Kernel: Implement AcceptSession SVC
2017-06-23 11:26:37 -07:00
Yuri Kunde Schlesner
1dd91e371b
Memory: Make PhysicalToVirtualAddress return a boost::optional
...
And fix a few places in the code to take advantage of that.
2017-06-21 22:55:17 -07:00
Yuri Kunde Schlesner
b3e13d653f
Kernel/IPC: Support translation of null handles
...
Missed this in my first implementation. Thanks to @wwylele for pointing
out that this was missing.
2017-06-21 14:27:03 -07:00
Weiyi Wang
d910f9cc85
Merge pull request #2789 from yuriks/misc-kernel
...
Trivial no-op additions
2017-06-21 20:34:12 +03:00
Yuri Kunde Schlesner
03964e9cd2
Merge pull request #2790 from yuriks/remove-movefrom
...
Remove ResultVal::MoveFrom
2017-06-20 22:04:09 -07:00
Yuri Kunde Schlesner
c27dad4cd1
ResultVal: Remove MoveFrom()
...
Replace it with std::move(result_val).Unwrap(), or Foo().Unwrap() in
case you already have an rvalue.
2017-06-18 19:03:15 -07:00
Yuri Kunde Schlesner
41376f050a
Kernel: Add comment about the extended linear heap area
2017-06-18 18:38:40 -07:00
Yuri Kunde Schlesner
6382e341f8
Kernel/IPC: Make HLERequestContext usable from outside kernel
2017-06-18 16:05:12 -07:00
Yuri Kunde Schlesner
48b7e2b061
Kernel/IPC: Use boost::small_vector for HLE context objects
2017-06-11 16:34:13 -07:00
Yuri Kunde Schlesner
192a95390e
Kernel: Allow clearing request_objects to re-use buffer space
...
Reduces the necessary allocation to max(in_handles, out_handles) rather
than (in_handles + out_handles).
2017-06-11 13:10:21 -07:00
Yuri Kunde Schlesner
e639024013
Kernel: Basic support for IPC translation for HLE services
2017-06-11 13:10:21 -07:00
Yuri Kunde Schlesner
ccba9e903f
Kernel: Add methods in HLERequestContext abstracting handle creation
2017-06-11 13:07:33 -07:00
Yuri Kunde Schlesner
1e8c1ed676
ServiceFramework: Use separate copy of command buffer
...
Copy the IPC command buffer to/from the request context before/after the
handler is invoked. This is part of a move away from using global data
for handling IPC requests.
2017-06-11 13:07:33 -07:00
Yuri Kunde Schlesner
74aaf0d5c7
Merge pull request #2756 from yuriks/service-framework
...
New service framework
2017-06-08 21:03:03 -07:00
Yuri Kunde Schlesner
5a6d4a2f19
Session: Remove/add some forward declarations
2017-06-08 00:33:57 -07:00
Yuri Kunde Schlesner
82a355b3cd
Kernel: Ensure objects are kept alive during ClientSession disconnection
...
Fixes #2760
2017-06-08 00:33:24 -07:00
Yuri Kunde Schlesner
0a7f4f531f
Service: Add new ServiceFramework framework for writing HLE services
...
The old "Interface" class had a few problems such as using free
functions (Which didn't allow you to write the service handler as if it
were a regular class.) which weren't very extensible. (Only received one
parameter with a pointer to the Interface object.)
The new ServiceFramework aims to solve these problems by working with
member functions and passing a generic context struct as parameter. This
struct can be extended in the future without having to update all
existing service implementations.
2017-06-08 00:11:37 -07:00
Yuri Kunde Schlesner
1e267fd653
Kernel: Remove some unnecessary namespace qualifications
2017-06-06 14:51:42 -07:00
Yuri Kunde Schlesner
8a35f3634e
Kernel: Add a dedicated SetHleHandler method to ServerPort/ServerSession
...
This allows attaching a HLE handle to a ServerPort at any point after it
is created, allowing port/session creation to be generic between HLE and
regular services.
2017-06-06 02:56:32 -07:00
Yuri Kunde Schlesner
41a3feea66
HLE: Move SessionRequestHandler from Service:: to Kernel::
...
Most of the code that works with this is or will be in the kernel, so
it's a more appropriate place for it to be.
2017-06-05 23:40:11 -07:00
Yuri Kunde Schlesner
ecfda5317e
Kernel: Move HandleTable to a separate file
2017-05-29 17:34:39 -07:00
Yuri Kunde Schlesner
6f662625d3
Kernel: Move WaitObject to a separate file
...
Now that HandleTable doesn't directly depend on WaitObject anymore, this
can be separated from the main kernel.h header.
2017-05-29 16:16:46 -07:00
Yuri Kunde Schlesner
ddbf9cec1b
Kernel: Removed HandleTable::GetWaitObject
...
This isn't necessary anymore since plain Get works correctly for
WaitObjects.
2017-05-29 15:10:06 -07:00
Yuri Kunde Schlesner
74aa9efe3e
Kernel: Extract dynamic Object pointer cast into its own function
2017-05-29 14:42:27 -07:00
Yuri Kunde Schlesner
467545ed48
Kernel: Centralize error definitions in errors.h
2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner
464dc927af
Merge pull request #2406 from Subv/session_disconnect
...
Kernel: Properly update port counters on session disconnection.
2017-05-21 17:18:16 -07:00
Subv
8e4b05c22a
Kernel/Sessions: Remove the ClientSession::Create function.
...
It is not meant to be used by anything other than CreateSessionPair.
2017-05-21 18:52:42 -05:00
Subv
f98eb7d315
Kernel: Remove a now unused enum and variable regarding a session's status.
2017-05-15 11:22:16 -05:00
Subv
9c496013b3
Kernel: Use a Session object to keep track of the status of a Client/Server session pair.
...
Reduce the associated port's connection count when a ServerSession is destroyed.
2017-05-15 11:22:15 -05:00
Yuri Kunde Schlesner
2668c26a68
Kernel: Map special regions according to ExHeader
...
This replaces the hardcoded VRAM/DSP mappings with ones made based on
the ExHeader ARM11 Kernel caps list. While this has no visible effect
for most applications (since they use a standard set of mappings) it
does improve support for system modules and n3DS exclusives.
2017-05-09 21:44:00 -07:00
Yuri Kunde Schlesner
03ad0ec0e5
DSP: Create backing memory for entire DSP RAM
...
Also move address space mapping out of video_core.
2017-05-09 21:44:00 -07:00
wwylele
67ead14445
Timer: restore missing signaled=true from #2421
2017-02-27 22:49:46 +02:00
B3n30
3fef6c1b0b
Fix log entry in timer::signal ( #2600 )
2017-02-27 11:04:03 -05:00
Mat M
dc1927a9d1
Doxygen: Amend minor issues ( #2593 )
...
Corrects a few issues with regards to Doxygen documentation, for example:
- Incorrect parameter referencing.
- Missing @param tags.
- Typos in @param tags.
and a few minor other issues.
2017-02-26 17:58:51 -08:00
Yuri Kunde Schlesner
9a88ab50f7
Merge pull request #2587 from yuriks/status-bar
...
Replace built-in Profiler with indicators in status bar
2017-02-26 17:51:15 -08:00
Yuri Kunde Schlesner
28c24c2c6e
Core: Remove unnecessary include in thread.h
2017-02-26 17:22:01 -08:00
Subv
f814a914b0
Timers: Immediately signal the timer if it was started with an initial value of 0.
2017-02-21 20:51:54 -05:00
Subv
a81290ffb4
Threads: Check the process' resource limit for the max allowed priority when creating a thread and remove the priority clamping code.
2017-01-11 16:38:05 -05:00
Subv
fbe090645c
Thread: Added priority range checking to svcSetThreadPriority and removed priority clamping code from Thread::SetPriority.
2017-01-11 16:38:04 -05:00
bunnei
cb38ee3497
Merge pull request #2397 from Subv/pulse
...
Kernel: Implemented Pulse event and timers.
2017-01-10 10:45:00 -05:00
bunnei
961bb24cf9
Merge pull request #2410 from Subv/sleepthread
...
Don't yield execution in SleepThread(0) if there are no available threads to run
2017-01-06 22:01:33 -05:00
bunnei
ba71c889f0
Merge pull request #2396 from Subv/sema_acquire
...
Kernel/Semaphore: Fixed a regression in semaphore waits.
2017-01-06 22:00:12 -05:00