- Dec 27, 2018
-
-
Zach Hilman authored
Serves no actual purpose in this instance besides making NACP's copy assignment deleted, which is not intended behavior.
-
Zach Hilman authored
Allows these functions to compile when T is not u8.
-
- Dec 26, 2018
-
-
Lioncash authored
These are user-facing strings, so they should be translatable.
-
Lioncash authored
Calling tr() from a file-scope array isn't advisable, since it can be executed before the Qt libraries are even fully initialized, which can lead to crashes. Instead, the translatable strings should be annotated, and the tr() function should be called at the string's usage site.
-
Lioncash authored
This is actually a struct, not a class, which can lead to compilation warnings.
-
David authored
* Fixed shader linking error due to TLDS coord should be coords * Fix remaining coords
-
ReinUsesLisp authored
-
- Dec 21, 2018
-
-
Lioncash authored
Previously xyz was always being zero initialized due to its constructor, but w wasn't. Ensures that we always have a deterministic initial state.
-
- Dec 19, 2018
-
-
Lioncash authored
If a thread handle is passed to svcGetProcessId, the kernel attempts to access the process ID via the thread's instance's owning process. Technically, this function should also be handling the kernel debug objects as well, however we currently don't handle those kernel objects yet, so I've left a note via a comment about it to remind myself when implementing it in the future.
-
Lioncash authored
With all the basic backing functionality implemented, we can now unstub svcSetMemoryAttribute.
-
Lioncash authored
This puts the backing functionality for svcSetMemoryAttribute in place, which will be utilized in a following change.
-
Lioncash authored
vm_manager: Add member function for checking a memory range adheres to certain attributes, permissions and states
-
Lioncash authored
Starts the process ID counter off at 81, which is what the kernel itself checks against internally when creating processes. It's actually supposed to panic if the PID is less than 81 for a userland process.
-
Lioncash authored
The service call uses a 64-bit value, just like svcGetProcessId. This amends the function signature accordingly.
-
Lioncash authored
The kernel uses a 64-bit value for the thread ID, so we shouldn't be using a 32-bit value.
-
Lioncash authored
svcGetProcessId's out parameter is a pointer to a 64-bit value, not a 32-bit one.
-
Lioncash authored
In the actual kernel, this is a 64-bit value, so we shouldn't be using a 32-bit type to handle it.
-
David Marcec authored
Found during hardware testing
-
David Marcec authored
-
David Marcec authored
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
-
- Dec 18, 2018
-
-
Lioncash authored
Now it also indicates the name and max session count. This also gives a name to the unknown bool. This indicates if the created port is supposed to be using light handles or regular handles internally. This is passed to the respective svcCreatePort parameter internally.
-
zhupengfei authored
Allows capturing screenshot at the current internal resolution (native for software renderer), but a setting is available to capture it in other resolutions. The screenshot is saved to a single PNG in the current layout.
-
heapo authored
Texture format fixes: Flag RGBA16UI as GL_RGBA_INTEGER format, and interpret R16U as Z16 when depth_compare is enabled.
-
MerryMage authored
-
MerryMage authored
-
ReinUsesLisp authored
-
Lioncash authored
This is supposed to return the current process' ID. (0 indicates an invalid ID for both process IDs and ARU IDs).
-
- Dec 17, 2018
- Dec 16, 2018
-
-
Lioncash authored
This is shorter and more concise. This also removes the now-innaccurate comment, as it's not returned wholesale to svcQueryMemory anymore.
-
Lioncash authored
Adds the barebones enumeration constants and functions in place to handle memory attributes, while also essentially leaving the attribute itself non-functional.
-
- Dec 15, 2018
-
-
bunnei authored
-
- Dec 13, 2018
-
-
Lioncash authored
We can hide the direct array from external view and instead provide functions to retrieve the necessary info. This has the benefit of completely hiding the makeup of the SinkDetails structure from the rest of the code. Given that this makes the array hidden, we can also make the array constexpr by altering the members slightly. This gets rid of several static constructor calls related to std::vector and std::function. Now we don't have heap allocations here that need to occur before the program can even enter main(). It also has the benefit of saving a little bit of heap space, but this doesn't matter too much, since the savings in that regard are pretty tiny.
-
Jens Schmer authored
Services created with the ServiceFramework base class install themselves as HleHandlers with an owning shared_ptr in the ServerPort ServiceFrameworkBase::port member variable, creating a cyclic ownership between ServiceFrameworkBase and the ServerPort, preventing deletion of the service objects. Fix that by removing the ServiceFrameworkBase::port member because that was only used to detect multiple attempts at installing a port. Instead store a flag if the port was already installed to achieve the same functionality.
-
- Dec 12, 2018
-
-
Lioncash authored
svcQueryProcessMemory is trivial to implement, given all the behavior necessary for it is present, it just needs a handler for it.
-
Lioncash authored
In the previous change, the memory writing was moved into the service function itself, however it still had a problem, in that the entire MemoryInfo structure wasn't being written out, only the first 32 bytes of it were being written out. We still need to write out the trailing two reference count members and zero out the padding bits. Not doing this can result in wrong behavior in userland code in the following scenario: MemoryInfo info; // Put on the stack, not quaranteed to be zeroed out. svcQueryMemory(&info, ...); if (info.device_refcount == ...) // Whoops, uninitialized read. This can also cause the wrong thing to happen if the user code uses std::memcmp to compare the struct, with another one (questionable, but allowed), as the padding bits are not guaranteed to be a deterministic value. Note that the kernel itself also fully zeroes out the structure before writing it out including the padding bits.
-
Lioncash authored
Moves the memory writes directly into QueryProcessMemory instead of letting the wrapper function do it. It would be inaccurate to allow the handler to do it because there's cases where memory shouldn't even be written to. For example, if the given process handle is invalid. HOWEVER, if the memory writing is within the wrapper, then we have no control over if these memory writes occur, meaning in an error case, 68 bytes of memory randomly get trashed with zeroes, 64 of those being written to wherever the memory info address points to, and the remaining 4 being written wherever the page info address points to. One solution in this case would be to just conditionally check within the handler itself, but this is kind of smelly, given the handler shouldn't be performing conditional behavior itself, it's a behavior of the managed function. In other words, if you remove the handler from the equation entirely, does the function still retain its proper behavior? In this case, no. Now, we don't potentially trash memory from this function if an invalid query is performed.
-
Lioncash authored
These should be swapped.
-
Lioncash authored
This would result in svcSetMemoryAttribute getting the wrong value for its third parameter. This is currently fine, given the service function is stubbed, however this will be unstubbed in a future change, so this needs to change.
-
Lioncash authored
The kernel returns a memory info instance with the base address set to the end of the address space, and the size of said block as 0 - address_space_end, it doesn't set both of said members to zero.
-