aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle
AgeCommit message (Collapse)Author
2018-12-10Merge pull request #1819 from DarkLordZach/disable-addonsbunnei
patch_manager: Add support for disabling patches
2018-12-10Merge pull request #1883 from lioncash/log-fspbunnei
service/fsp_srv: Correct returned value in GetGlobalAccessLogMode()
2018-12-10Merge pull request #1872 from lioncash/proc-infoHexagon12
kernel/process: Set ideal core from metadata
2018-12-10Merge pull request #1876 from lioncash/vmabunnei
vm_manager: Make vma_map private
2018-12-09service/fsp_srv: Correct returned value in GetGlobalAccessLogMode()Lioncash
Based off RE, the backing code only ever seems to use 0-2 as the range of values 1 being a generic log enable, with 2 indicating logging should go to the SD card. These are used as a set of flags internally. Given we only care about receiving the log in general, we can just always signify that we want logging in general.
2018-12-07Merge pull request #1864 from lioncash/nrrbunnei
service/ldr: Amend layouts of NRO and NRR headers
2018-12-07Merge pull request #1874 from lioncash/bindingsbunnei
hle/service, hle/sm: Minor cleanup
2018-12-06vm_manager: Make vma_map privateLioncash
This was only ever public so that code could check whether or not a handle was valid or not. Instead of exposing the object directly and allowing external code to potentially mess with the map contents, we just provide a member function that allows checking whether or not a handle is valid. This makes all member variables of the VMManager class private except for the page table.
2018-12-06Merge pull request #1861 from lioncash/resetbunnei
kernel/svc: Correct behavior of svcResetSignal()
2018-12-06hle/service: Replace log + UNIMPLEMENTED with UNIMPLEMENTED_MSGLioncash
Combines the two into one, shortening the amount of code here.
2018-12-06hle/service: Remove unnecessary using declarationsLioncash
Only one usage of the specified objects made use of the lack of namespacing. Given the low usage, we can just remove these.
2018-12-06hle/service, hle/sm: Compress usages of MakeResult()Lioncash
These auto-deduce the result based off its arguments, so there's no need to do that work for the compiler, plus, the function return value itself already indicates what we're returning.
2018-12-06hle/service, hle/sm: Use structured bindings where applicableLioncash
Gets rid of the need to keep the variables separate from their actual initialization spots.
2018-12-05kernel/process: Set ideal core from metadataLioncash
A very trivial change. If metadata is available, the process should use it to retrieve the desired core for the process to run on.
2018-12-05service/ldr: Deduplicate instruction cache clearing code in LoadNro()Lioncash
We don't need to specify all of the ARM interfaces explicitly.
2018-12-05service/ldr: Amend layout of the NRO headerLioncash
The first word is just a padding byte, it's not an actual entry instruction. Also renames the rest of the entries according to SwitchBrew.
2018-12-05service/ldr: Corrent padding within the NRR header layoutLioncash
The padding after the magic signature value should be 12 bytes rather than 28 bytes. The other 16 should be placed after the title ID pattern.
2018-12-04kernel/svc: Correct behavior of svcResetSignal()Lioncash
While partially correct, this service call allows the retrieved event to be null, as it also uses the same handle to check if it was referring to a Process instance. The previous two changes put the necessary machinery in place to allow for this, so we can simply call those member functions here and be done with it.
2018-12-04kernel/process: Make Process a WaitObjectLioncash
Process instances can be waited upon for state changes. This is also utilized by svcResetSignal, which will be modified in an upcoming change. This simply puts all of the WaitObject related machinery in place.
2018-12-04kernel/readable_event: Add member function for enforcing a strict reset contractLioncash
svcResetSignal relies on the event instance to have already been signaled before attempting to reset it. If this isn't the case, then an error code has to be returned.
2018-12-04Merge pull request #1704 from DarkLordZach/oss-sysarchivebunnei
file_sys: Implement open source system archives
2018-12-04kernel/svc: Remove unused header inclusionLioncash
2018-12-04kernel/svc: Implement svcSignalEvent()Lioncash
This function simply does a handle table lookup for a writable event instance identified by the given handle value. If a writable event cannot be found for the given handle, then an invalid handle error is returned. If a writable event is found, then it simply signals the event, as one would expect.
2018-12-04kernel/svc: Implement svcCreateEvent()Lioncash
svcCreateEvent operates by creating both a readable and writable event and then attempts to add both to the current process' handle table. If adding either of the events to the handle table fails, then the relevant error from the handle table is returned. If adding the readable event after the writable event to the table fails, then the writable event is removed from the handle table and the relevant error from the handle table is returned. Note that since we do not currently test resource limits, we don't check the resource limit table yet.
2018-12-04Merge pull request #1853 from lioncash/eventbunnei
kernel/object: Amend handle types to distinguish between readable and writable events
2018-12-04kernel/object: Amend handle types to distinguish between readable and ↵Lioncash
writable events Two kernel object should absolutely never have the same handle ID type. This can cause incorrect behavior when it comes to retrieving object types from the handle table. In this case it allows converting a WritableEvent into a ReadableEvent and vice-versa, which is undefined behavior, since the object types are not the same. This also corrects ClearEvent() to check both kernel types like the kernel itself does.
2018-12-04kernel/handle_table: Amend reference to CTR-OS in Create()Lioncash
Another hold-over from Citra.
2018-12-04kernel/svc: Implement the resource limit svcGetInfo optionLioncash
Allows a process to register the resource limit as part of its handle table.
2018-12-04[Kernel::CreateThread] Match format specifiers to LOG_TRACE's argumentsV.Kalyuzhny
2018-12-03Merge pull request #1840 from lioncash/infobunnei
svc: Reorganize svcGetInfo, handle more error cases for existing implemented info categories
2018-12-03aoc_u: Obey disabled add-ons list when listing DLCZach Hilman
2018-12-03Merge pull request #1835 from lioncash/cache-globalbunnei
filesystem: De-globalize registered_cache_union
2018-12-03Merge pull request #1803 from DarkLordZach/k-able-eventbunnei
kernel: Divide Event into ReadableEvent and WritableEvent
2018-12-03Merge pull request #1833 from lioncash/cleanbunnei
service/fsp_srv: Implement CleanDirectoryRecursively
2018-12-03Merge pull request #1839 from lioncash/initbunnei
service/audio/audout_u: Amend constructor initialization list order
2018-12-03Merge pull request #1841 from ogniK5377/npad-mode-fixbunnei
Fixed crash with SetNpadMode
2018-12-02service/usb: Update function tableLioncash
Updates the function table for IClientEpSession based off information provided by SwitchBrew.
2018-12-02service/erpt: Update function tableLioncash
Updates the function table according to information provided by SwitchBrew.
2018-12-03Fixed crash with SetNpadModeDavid Marcec
fixed crash due to handheld
2018-12-02svc: Use the current process' handle table for retrieving the process ↵Lioncash
instance to act upon The kernel uses the handle table of the current process to retrieve the process that should be used to retrieve certain information. To someone not familiar with the kernel, this might raise the question of "Ok, sounds nice, but doesn't this make it impossible to retrieve information about the current process?". No, it doesn't, because HandleTable instances in the kernel have the notion of a "pseudo-handle", where certain values allow the kernel to lookup objects outside of a given handle table. Currently, there's only a pseudo-handle for the current process (0xFFFF8001) and a pseudo-handle for the current thread (0xFFFF8000), so to retrieve the current process, one would just pass 0xFFFF8001 into svcGetInfo. The lookup itself in the handle table would be something like: template <typename T> T* Lookup(Handle handle) { if (handle == PSEUDO_HANDLE_CURRENT_PROCESS) { return CurrentProcess(); } if (handle == PSUEDO_HANDLE_CURRENT_THREAD) { return CurrentThread(); } return static_cast<T*>(&objects[handle]); } which, as is shown, allows accessing the current process or current thread, even if those two objects aren't actually within the HandleTable instance.
2018-12-02svc: Reorganize svcGetInfo, handle more error cases for existing implemented ↵Lioncash
info categories Our implementation of svcGetInfo was slightly incorrect in that we weren't doing proper error checking everywhere. Instead, reorganize it to be similar to how the kernel seems to do it.
2018-12-01service/audio/audout_u: Amend constructor initialization list orderLioncash
Orders the constructor initializer list the same way the members of the class are declared. Prevents -Wreorder warnings
2018-12-01filesystem: De-globalize registered_cache_unionLioncash
We can just return a new instance of this when it's requested. This only ever holds pointers to the existing registed caches, so it's not a large object. Plus, this also gets rid of the need to keep around a separate member function just to properly clear out the union. Gets rid of one of five globals in the filesystem code.
2018-12-01Merge pull request #1830 from Subv/vi_ubbunnei
Services/VI: Dereferencing an uninitialized std::optional is undefined behavior.
2018-12-01Fix debug buildLioncash
A non-existent parameter was left in some formatting calls (the logging macro for which only does anything meaningful on debug builds)
2018-11-30service/fsp_srv: Implement CleanDirectoryRecursivelyLioncash
This is the same behavior-wise as DeleteDirectoryRecursively, with the only difference being that it doesn't delete the top level directory in the hierarchy, so given: root_dir/ - some_dir/ - File.txt - OtherFile.txt The end result is just: root_dir/
2018-11-30Services/VI: Dereferencing an uninitialized std::optional is undefined behavior.Subv
Assert that it is not empty before using it in the DequeueBuffer wait callback.
2018-11-30service/set: Convert GetLanguageCode over to using PushEnum()Lioncash
This code was around prior to the introduction of PushEnum, so convert it over so we don't need to cast here.
2018-11-30service/set: Implement MakeLanguageCodeLioncash
This function simply converts a given index into a language code.
2018-11-29hle_ipc: Refactor SleepClientThread to avoid ReadableEventZach Hilman