| Age | Commit message (Collapse) | Author |
|
|
|
kernel objects. (#3154)
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects.
- See https://github.com/citra-emu/citra/pull/4710 for details.
|
|
lm: Rewrite logger to use core reporting services
|
|
Ports BCAT to use FSC interface
|
|
Allows centralized control over logging mechanisms.
|
|
|
|
|
|
prepo: Implement New, System, and Non-User variants of SaveReport
|
|
|
|
|
|
|
|
|
|
service/audren_u: Unstub ListAudioDeviceName
|
|
Implement GPU Synchronization Mechanisms & Correct NVFlinger
|
|
Trims out the lingering reliance on global state out of the audio code.
|
|
pm: Implement various pm commands for finding process and title IDs
|
|
apm: Initial implementation of performance config and boost mode
|
|
fsp-srv: Implement Access Logging Functionality
|
|
|
|
Implement Time::GetSharedMemoryNativeHandle
|
|
|
|
Allows games to log data to the SD.
|
|
Returns the process ID of the current application or 0 if no app is running.
|
|
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
|
|
Avoids using system accessor to get current process in applet code.
|
|
These keep track of running process' launch properties and control properties and allows for issuing and reading them by process and title ID.
|
|
core: Add detailed local reporting feature for development
|
|
|
|
|
|
core/hle/result: Tidy up the base error code result header.
|
|
Relocates the error code to where it's most related, similar to how all
the other error codes are. Previously we were including a non-generic
error in the main result code header.
|
|
These can just be passed regularly, now that we use fmt instead of our
old logging system.
While we're at it, make the parameters to MakeFunctionString
std::string_views.
|
|
Gets rid of the largest set of mutable global state within the core.
This also paves a way for eliminating usages of GetInstance() on the
System class as a follow-up.
Note that no behavioral changes have been made, and this simply extracts
the functionality into a class. This also has the benefit of making
dependencies on the core timing functionality explicit within the
relevant interfaces.
|
|
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.
|
|
Combines the two into one, shortening the amount of code here.
|
|
Only one usage of the specified objects made use of the lack of
namespacing. Given the low usage, we can just remove these.
|
|
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.
|
|
Gets rid of the need to keep the variables separate from their actual
initialization spots.
|
|
When yuzu is compiled in release mode this function is unused, however,
when compiled in debug mode, it's used within a LOG_TRACE statement.
This prevents erroneous compilation warnings about an unused function
(that isn't actually totally unused).
|
|
psm: Add psm service and stub commands 0 and 1
|
|
|
|
Seems to be the power controller. Listed in switchbrew under the category PTM services.
|
|
VfsFilesystem instance by reference
Neither of these functions alter the ownership of the provided pointer,
so we can simply make the parameters a reference rather than a direct
shared pointer alias. This way we also disallow passing incorrect memory values like
nullptr.
|
|
service/vi: Replace includes with forward declarations where applicable
|
|
|
|
|
|
With the named port functionality all migrated over to the kernel,
there's no need to keep this around anymore.
|
|
Now that we have a class representing the kernel in some capacity, we
now have a place to put the named port map, so we move it over and get
rid of another piece of global state within the core.
|
|
As means to pave the way for getting rid of global state within core,
This eliminates kernel global state by removing all globals. Instead
this introduces a KernelCore class which acts as a kernel instance. This
instance lives in the System class, which keeps its lifetime contained
to the lifetime of the System class.
This also forces the kernel types to actually interact with the main
kernel instance itself instead of having transient kernel state placed
all over several translation units, keeping everything together. It also
has a nice consequence of making dependencies much more explicit.
This also makes our initialization a tad bit more correct. Previously we
were creating a kernel process before the actual kernel was initialized,
which doesn't really make much sense.
The KernelCore class itself follows the PImpl idiom, which allows
keeping all the implementation details sealed away from everything else,
which forces the use of the exposed API and allows us to avoid any
unnecessary inclusions within the main kernel header.
|