| Age | Commit message (Collapse) | Author |
|
Extracts out all of the thread local storage management from thread
instances themselves and makes the owning process handle the management
of the memory. This brings the memory management slightly more in line
with how the kernel handles these allocations.
Furthermore, this also makes the TLS page management a little more
readable compared to the lingering implementation that was carried over
from Citra.
|
|
This will be necessary for making our TLS slot management slightly more
straightforward. This can also be utilized for other purposes in the
future.
We can implement the existing simpler overload in terms of this one
anyways, we just pass the beginning and end of the ASLR region as the
boundaries.
|
|
Implemented InitializeApplicationInfo & InitializeApplicationInfoRestricted
|
|
Implement Time::GetSharedMemoryNativeHandle
|
|
Implemented INotificationService
|
|
|
|
Core_Timing: Make core_timing threadsafe by default.
|
|
Seems to be an issue with clang format
|
|
|
|
|
|
InitializeApplicationInfoRestricted will need further implementation as it's checking for other user requirements about the game. As we're emulating, we're assuming the user owns the game so we skip these checks currently, implementation will need to be added further on
|
|
applets: Implement backend and default frontend for Parental Controls and EShop (ShopN) applets
|
|
|
|
|
|
This PR attempts to implement the shared memory provided by GetSharedMemoryNativeHandle. There is still more work to be done however that requires a rehaul of the current time module to handle clock contexts. This PR is mainly to get the basic functionality of the SharedMemory working and allow the use of addition to it whilst things get improved on.
Things to note:
Memory Barriers are used in the SharedMemory and a better solution would need to be done to implement this. Currently in this PR I’m faking the memory barriers as everything is sync and single threaded. They work by incrementing the counter and just populate the two data slots. On data reading, it will read the last added data.
Specific values in the shared memory would need to be updated periodically. This isn't included in this PR since we don't actively do this yet. In a later PR when time is refactored this should be done.
Finally, as we don't handle clock contexts. When time is refactored, we will need to update the shared memory for specific contexts. This PR does this already however since the contexts are all identical and not separated. We're just updating the same values for each context which in this case is empty.
Tiime:SetStandardUserSystemClockAutomaticCorrectionEnabled, Time:IsStandardUserSystemClockAutomaticCorrectionEnabled are also partially implemented in this PR. The reason the implementation is partial is because once again, a lack of clock contexts. This will be improved on in a future PR.
This PR closes issue #2556
|
|
should be the users account id
|
|
SizedNotificationInfo
|
|
Avoids using system accessor to get current process in applet code.
|
|
|
|
Prevents crashes with ShopN applet occasionally.
|
|
If it is needed but wasn't passed (or passed nullptr), the Shop handling code will alert and throw an error.
|
|
Allows easy handling of multiple shim types, as they have enough in common to be the same backend but not enough to share init/exec.
|
|
Much, much more HW-accurate and allows us to easily support all of the different web 'shim' types.
|
|
|
|
This is responsible for parental controls and supports verifying, changing, and registering PIN codes.
|
|
These keep track of running process' launch properties and control properties and allows for issuing and reading them by process and title ID.
|
|
|
|
|
|
Glue is the name of the sysmodule that contains both arp and bgtc.
|
|
Manages mapping between title IDs and application launch and control properties.
|
|
|
|
service/acc: Silence truncation warnings
|
|
kernel: Differentiate kernel and user processes when picking ID
|
|
core: Add detailed local reporting feature for development
|
|
The sanitizing function ensures that the returned type is always the
correct type. This eliminates warnings without extra casts.
|
|
Even though it has been proven that IAudioRenderer:SystemEvent is
actually an automatic event. The current implementation of such event is
all thought to be manual. Thus it's implementation needs to be corrected
when doing such change. As it is right now this PR introduced a series
of regressions on softlocks on multiple games. Therefore, this pr
reverts such change until a correct implementation is made.
|
|
service/audio/audren_u: Correct event reset type for the system event
|
|
This is actually an auto-reset event in the audio service itself, not a
manual one.
|
|
|
|
The old implementation had faulty Threadsafe methods where events could
be missing. This implementation unifies unsafe/safe methods and makes
core timing thread safe overall.
|
|
|
|
|
|
Partial impl of GetAccumulatedSuspendedTickChangedEvent
IPC-100 was changed to InitializeApplicationInfoOld instead of InitializeApplicationInfo. IPC-150 makes an indentical call to IPC-100 however does extra processing. They should not have the same name as it's quite confusing to debug.
|
|
common/hex_util: Combine HexVectorToString() and HexArrayToString()
|
|
These can be generified together by using a concept type to designate
them. This also has the benefit of not making copies of potentially very
large arrays.
|
|
This is performing more work than would otherwise be necessary during
VMManager's destruction. All we actually want to occur in this scenario
is for any allocated memory to be freed, which will happen automatically
as the VMManager instance goes out of scope.
Anything else being done is simply unnecessary work.
|
|
This allows kernel internal type processes to be assigned IDs in the KIP range while userland processes are assigned in the user range.
|
|
kernel/process: Make Create()'s name parameter be taken by value
|
|
Makes the interface more flexible in terms of how Create() may be
called, while still allowing the parameter itself to be moved into.
|
|
TotalMemoryUsedWithoutMmHeap/TotalMemoryAvailableWithoutMmHeap
Given we don't currently implement the personal heap yet, the existing
memory querying functions are essentially doing what the memory querying
types introduced in 6.0.0 do.
So, we can build the necessary machinery over the top of those and just
use them as part of info types.
|