Zach Hilman
3476830b26
svc: Avoid performance-degrading unnecessary reschedule
2018-12-02 00:44:40 -05:00
Zach Hilman
820d81b9a5
scheduler: Add explanations for YieldWith and WithoutLoadBalancing
2018-11-22 00:33:53 -05:00
Zach Hilman
409dcf0e0a
svc: Implement yield types 0 and -1
2018-11-18 23:44:19 -05:00
bunnei
e34d47e6e3
Merge pull request #1620 from DarkLordZach/ldr-ro
...
ldr_ro: Complete LDR:RO implementation
2018-11-18 19:23:38 -08:00
Mat M
9a1bac840e
Merge pull request #1728 from FearlessTobi/reset-signal
...
svc: ResetSignal is not stubbed
2018-11-18 15:51:32 -05:00
Tobias
13f79cc5bd
svc: ResetSignal is not stubbed
...
https://user-images.githubusercontent.com/20753089/48677874-b8e01c80-eb7b-11e8-8043-b99faa29022c.PNG
2018-11-18 21:49:17 +01:00
Zach Hilman
51af996854
ldr_ro: Add error check for memory allocation failure
2018-11-17 21:40:26 -05:00
Lioncash
d21b2164e9
kernel/errors: Clean up error codes
...
Similar to PR 1706, which cleans up the error codes for the filesystem
code, but done for the kernel error codes. This removes the ErrCodes
namespace and specifies the errors directly. This also fixes up any
straggling lines of code that weren't using the named error codes where
applicable.
2018-11-16 14:32:30 -05:00
Mat M
14cede1a0c
Merge pull request #1638 from FreddyFunk/SetMemoryPermission-Stubbed
...
Implement SetMemoryPermission
2018-11-16 10:35:56 -05:00
bunnei
f7319b0d3c
Merge pull request #1687 from lioncash/deduplication
...
kernel/thread: Deduplicate scheduler switching code
2018-11-15 14:47:42 -08:00
Zach Hilman
0276761a1e
process: Make MirrorMemory take state to map new memory as
...
Credits to Subv
2018-11-15 12:48:09 -05:00
bunnei
e1ea8cc721
Merge pull request #1679 from DarkLordZach/deterministic-rng-2
...
svc: Use proper random entropy generation algorithm
2018-11-14 11:52:27 -08:00
Lioncash
f9db75fe40
kernel/thread: Deduplicate scheduler switching code
...
The code in both places was the same verbatim, so we can extract it to a
function to deduplicate the logic.
2018-11-14 00:02:42 -05:00
Lioncash
004277477a
vm_manager: Unstub GetTotalHeapUsage()
...
Now that we've moved all of the heap-related stuff to the VMManager
class, we can unstub this function, as the necessary members are visible
now.
2018-11-13 13:08:26 -05:00
Lioncash
b8e885c6e5
kernel/process: Migrate heap-related memory management out of the process class and into the vm manager
...
Avoids a breach of responsibilities in the interface and keeps the
direct code for memory management within the VMManager class.
2018-11-13 13:08:19 -05:00
Zach Hilman
ab552e4a25
svc: Use proper random entropy generation algorithm
2018-11-13 12:26:03 -05:00
Zach Hilman
cb1e63ef09
svc: Return random seed for svcGetInfo RandomEntropy
2018-11-12 21:46:21 -05:00
David
581406af18
svcBreak now dumps information from the debug buffer passed ( #1646 )
...
* svcBreak now dumps information from the debug buffer passed
info1 and info2 seem to somtimes hold an address to a buffer, this is usually 4 bytes or the size of the int and contains an error code. There's other circumstances where it can be something different so we hexdump these to examine them at a later date.
* Addressed comments
2018-11-07 20:43:54 -08:00
Frederic Laing
ba2cdcdc5a
Implement SetMemoryPermission
2018-11-06 10:21:01 +01:00
Frederic Laing
ab7472345b
Stubbed SetMemoryPermission
2018-11-03 16:01:34 +01:00
Lioncash
352b56367c
general: Remove unused boost inclusions where applicable
...
Cleans up unused includes and trims off some dependencies on externals.
2018-10-30 00:09:46 -04:00
Frederic L
7a5eda5914
global: Use std::optional instead of boost::optional ( #1578 )
...
* get rid of boost::optional
* Remove optional references
* Use std::reference_wrapper for optional references
* Fix clang format
* Fix clang format part 2
* Adressed feedback
* Fix clang format and MacOS build
2018-10-30 00:03:25 -04:00
bunnei
adf26ae668
Merge pull request #1621 from lioncash/ipc
...
hle_ipc: Make GetDomainMessageHeader return a regular pointer
2018-10-29 23:55:59 -04:00
Lioncash
6383653a8d
hle_ipc: Add member function for querying the existence of a domain header
...
Gets rid of the need to call the getter and then check for null.
2018-10-29 23:28:04 -04:00
Lioncash
0cc347462d
hle_ipc: Make GetDomainMessageHeader return a regular pointer
...
Nothing requires the shared owner ship here, so we can just return a
plain pointer.
2018-10-29 23:18:25 -04:00
Lioncash
a973a049b7
core: Make System references const where applicable
2018-10-28 17:45:29 -04:00
Lioncash
7de8e36343
svc: Localize the GetInfo enum class to the function itself
...
Nothing from this enum is intended to be used outside of this function.
2018-10-26 12:49:14 -04:00
Lioncash
6594853eb1
svc: Implement svcGetInfo command 0xF0000002
...
This retrieves:
if (curr_thread == handle_thread) {
result = total_thread_ticks + (hardware_tick_count - last_context_switch_ticks);
} else if (curr_thread == handle_thread && sub_id == current_core_index) {
result = hardware_tick_count - last_context_switch_ticks;
}
2018-10-26 12:49:11 -04:00
bunnei
c2049aa4e5
process: LoadModule should clear JIT instruction cache.
2018-10-25 18:03:54 -04:00
bunnei
a609b6907a
Kernel/Memory: Added a function to first a suitable guest address at which to allocate a region of a given size.
2018-10-25 18:03:54 -04:00
Lioncash
1fb4bebb63
kernel/errors: Remove now-unused, unnecessary, error codes
...
Now that we've gotten the innaccurate error codes out of the way, we can
finally toss away a bunch of these, trimming down the error codes to
ones that are actually used and knocking out two TODO comments.
2018-10-24 14:58:37 -04:00
Lioncash
239dfea34a
kernel/shared_memory: Return ERR_INVALID_MEMORY_PERMISSIONS instead of ERR_INVALID_COMBINATION
...
This is more consistent with what the kernel does.
2018-10-24 14:54:36 -04:00
Lioncash
474bc29208
kernel/server_port: Simplify emptiness check within ShouldWait()
2018-10-24 14:24:36 -04:00
Lioncash
b703aba622
kernel/server_port: Change error case return value in Accept() to ERR_NOT_FOUND
...
This is what the kernel does in this instance.
2018-10-24 14:23:38 -04:00
Lioncash
afb7e5cc05
kernel/error: Remove leftover 3DS error codes
...
These are now entirely unused and can be removed.
2018-10-24 14:21:37 -04:00
Lioncash
fcf8f53a63
kernel/svc: Amend returned error code for invalid priorities in CreateThread
...
Like with the previous change, the kernel doesn't return NOT_AUTHORIZED
here. It returns INVALID_THREAD_PRIORITY.
2018-10-24 14:11:11 -04:00
Lioncash
77328b0f19
kernel/svc: Move and correct returned error code for invalid thread priorities in SetThreadPriority()
...
All priority checks are supposed to occur before checking the validity
of the thread handle, we're also not supposed to return
ERR_NOT_AUTHORIZED here.
2018-10-24 14:10:48 -04:00
Lioncash
c7c346a15d
kernel/error: Add error code for invalid pointers
...
The kernel appears to return 0xE601 for this situation. Particularly in
svcWaitSynchronization, svcReplyAndReceive, and svcGetThreadContext
2018-10-24 13:41:32 -04:00
Lioncash
6df09f5b76
kernel/error: Add error code for closed sessions
...
The kernel appears to return 0xF601 for this case.
2018-10-24 13:38:39 -04:00
bunnei
a94e5d9e68
Merge pull request #1551 from ogniK5377/improved-svcbreak
...
Added break types to svcBreak
2018-10-23 19:56:42 -04:00
bunnei
e61a62066a
Merge pull request #1540 from lioncash/handle
...
kernel/process: Make the handle table per-process
2018-10-23 18:43:11 -04:00
David Marcec
38cdb6744d
Added assertion failed, reworked logging levels
2018-10-23 15:17:13 +11:00
David Marcec
8042731da9
Added break types to svcBreak
...
There seems to be more such as type 1, and 2. Unsure what these currently are but when a game hits them we can investigate and add the rest
2018-10-23 15:03:59 +11:00
Lioncash
90a981a03a
kernel/process: Make the handle table per-process
...
In the kernel, there isn't a singular handle table that everything gets
tossed into or used, rather, each process gets its own handle table that
it uses. This currently isn't an issue for us, since we only execute one
process at the moment, but we may as well get this out of the way so
it's not a headache later on.
2018-10-20 16:38:32 -04:00
Lioncash
896c0f61a0
svc: Fix vma boundary check in svcQueryMemory
...
This should be comparing against the queried process' vma_map, not the
current process'. The only reason this hasn't become an issue yet is we
currently only handle one process being active at any time.
2018-10-20 14:56:51 -04:00
bunnei
60317e6306
Merge pull request #1520 from lioncash/san
...
svc: Add missing sanitizing checks for MapSharedMemory/UnmapSharedMemory
2018-10-19 22:58:57 -04:00
Lioncash
4b5ae8dbaa
svc: Check for word alignment of addresses within svcArbitrateLock/svcArbitrateUnlock
...
The kernel itself checks whether or not the provided addresses are word
aligned before continuing, so we should be doing the same.
2018-10-18 13:01:29 -04:00
Lioncash
d27f4a4928
common: Move Is4KBAligned() to alignment.h
...
Aligning on 4KB pages isn't a Switch-specific thing, so this can be
moved to common so it can be used with other things as well.
2018-10-18 12:57:02 -04:00
Lioncash
33830aa65a
svc: Add missing sanitizing checks for MapSharedMemory/UnmapSharedMemory
...
Now that the changes clarifying the address spaces has been merged, we
can wrap the checks that the kernel performs when mapping shared memory
(and other forms of memory) into its own helper function and then use
those within MapSharedMemory and UnmapSharedMemory to complete the
sanitizing checks that are supposed to be done.
2018-10-18 02:01:21 -04:00
bunnei
6e8752881c
Merge pull request #1498 from lioncash/aslr
...
svc: Clarify enum values for AddressSpaceBaseAddr and AddressSpaceSize in svcGetInfo()
2018-10-17 18:31:51 -04:00