aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/lm/lm.cpp
Commit message (Collapse)AuthorAgeFilesLines
* service: placeholder handlers for known but unimplemented commandsTakoroka3 days1-2/+3
| | | | | | | | | | | | | | Add StubReplyZeroed, StubReplyEvent and StubReplyInterface to ServiceFrameworkBase: for Switch 2 callers they reply with zeroed data, with zeroed data and a copy handle to an event that never fires, or with an nx2: stub interface; other callers get the unimplemented-function path as before. Each command is logged once. Use them for the commands of the interfaces games open that had no handler or a nullptr one (hid, am, audio, aoc, caps, mii, set, lm, acc, ssl, bsd and the nx2 vi2/gsv/gpu/syncpt sessions): a command that returns an interface now returns one, a command that returns a handle returns an event, so callers no longer get handle 0 or object 0 back.
* Revert "[hle] constexpr handler dispatch maps, introduce version gating ↵PavelBARABANOV2026-10-151-28/+27
| | | | | | | | | | | | | | | | | (#4480)" (#4532) This reverts commit 218c6705d950635bc18f8458d738a1996fb592b6. - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md). - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4532 Reviewed-by: lizzie <lizzie@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: Maufeat <sahyno1996@gmail.com>
* [hle] constexpr handler dispatch maps, introduce version gating (#4480)lizzie2026-10-131-27/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This PR primarily focuses on upbringing constexpr maps for handlers. Each time an HLE object of a service is construed, it registers it's own handlers, over and over. Regardless of whetever it needs them at the moment or not. Additionally we don't require to keep track of different function pointers amongst each object. This can be done by overriding the given function instead, as opposed to having a separate hash map for every given object. In other words: Remove handlers (and handlers_tipc) map for every instance then read from a static defined per-class. - [x] Migrate all HLE functions to new `frozen::map` constexpr time finder - [ ] Measure if this approach actually makes better codegen Optional: - [x] Properly gate all functions (that have versions commented next to them) - [x] Maybe store `HandlerFnP<>` and `const char*` separately, version gating can go in a different map as well Information such as name can be used on debug builds, but doesn't particularly help on release as one can consult an external reference (or have an annotated IPC map) Signed-off-by: lizzie <lizzie@eden-emu.dev> - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Co-authored-by: Maufeat <sahyno1996@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4480 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
* [common] Switch to boost::unordered_flat containers (#4326)crueter2026-08-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaces all instances of ankerl's unordered map/set with boost's `unordered_flat_*` classes. This uses std::hash since boost::hash is actually a lot slower. Also adds an abstraction layer in `Common` so future changes are quicker and easier. Other implementation details: - ankerl provided hash specializations for tuple and pair, so those were ported here - std::erase_if doesn't work on boost, so just used the ADL'd erase_if This should be about equal or superior performance as unordered_dense for everything except iteration. Signed-off-by: crueter <crueter@eden-emu.dev> - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4326 Reviewed-by: Lizzie and Samuel <lizzie@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
* [hle/service] stub missing homebrew services, fix NPad/caps crashes (#4264)lizzie2026-08-181-0/+16
| | | | | | | | | | | | | | | | | | Signed-off-by: lizzie <lizzie@eden-emu.dev> - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- this PR adds various missing services (acc:e, acc:e:u1) to expand homebrew compatibility notably this also fixes NPad related crashes due to nullref Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4264 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
* [hle] remove parent object reference data on Request/Response builders, pass ↵lizzie2026-06-291-1/+1
| | | | | | | | | | | | | | | | by argument (#3774) anyways this should remove a bunch of redundant code/stack usage for response builders (ahem, msvc) SHOULD help games that use IPC heavily like PKZA and whatnot biblical levels of performance greed Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3774 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: Maufeat <sahyno1996@gmail.com>
* [common/logging] Simplify logging logic and fix issues when logging before ↵lizzie2026-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | system is created (#3688) - our logging code was bigger than spdlog itself, why???? just keep it simple - fix issues when logging before logging system is even started - removes the "initialized logging twice" issue - removes uneeded indirection in file logging - uses direct formatting instead of jumping hoopla-around the fmt::format() ressult - code duplication and dead code removal as usual I did explore dup2() but I think it's not worth the hassle I did try `fwopen()` but it's better if things are just kept as-is. there is a lot of noise because I removed a bunch of redundant files on logging and just put everything in one file now normally this wouldn't be a good idea, however consider: the complexity of logging; it's less than 500 lines... does it really need a whole subsystem?!?!?! ITS JUST LOGGING Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3688 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: DraVee <chimera@dravee.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [core/loader] prevent program_image reallocations in NSO+KIP loading methods ↵lizzie2026-02-281-5/+5
| | | | | | | | | | | | | | | (#3639) also changes some methods to std::span<> as well, but mainly std::vector<> in the NSO/KIP loading stuff is not needed to be memcpy'ed and memmove'd around this should save a marginal amount of loading time (RDR1) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3639 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: Maufeat <sahyno1996@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [*] change all std::unordered_map and std::unordered_set into ↵lizzie2026-02-101-3/+3
| | | | | | | | | | | | | | | | | | | ankerl::unordered_dense::map/set variants (#3442) mainly doing this to reduce memory footprint; we all know how nice ankerl::unordered_dense is in theory 4x faster - in practice these maps arent that "hot" anyways so not likely to have much perf gained i just want to reduce mem fragmentation to ease my porting process, plus it helps other platforms as well (ahem weak Mediatek devices) :) Signed-off-by: lizzie <lizzie@eden-emu.dev> Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3442 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [hle] update firmware version from 21.0.1 to 21.1.0 (#3208)lizzie2025-12-271-0/+2
| | | | | | | | | Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3208 Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [meta] fix license headers (#2547)lizzie2025-09-211-0/+3
| | | | | | | Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2547 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* [cmake] enable clang-cl and WoA builds (#348)lizzie2025-09-091-1/+1
| | | | | | | | | | | | | | Compilation and CMake fixes for both Windows on ARM and clang-cl, meaning Windows can now be built on both MSVC and clang on both amd64 and aarch64. Compiling on clang is *dramatically* faster so this should be useful for CI. Co-authored-by: crueter <crueter@eden-emu.dev> Co-authored-by: crueter <crueter@crueter.xyz> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/348 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
* everything related to the FW 20 has been deleted.Pavel Barabanov2025-05-111-2/+0
|
* started adding services for firmware 20.0.0 without implementationPavel Barabanov2025-05-031-0/+2
|
* service: move hle_ipc from kernelLiam2023-03-011-4/+4
|
* service: refactor server architectureLiam2023-02-211-2/+6
| | | | Converts services to have their own processes
* general: Convert source file copyright comments over to SPDXMorph2022-04-231-3/+2
| | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
* core: Remove unused includesameerj2021-11-031-3/+0
|
* lm: Demote guest logs to LOG_DEBUGameerj2021-06-141-27/+20
| | | | Guest logs are not very useful, as they are intended for use by the game developers during development. As such, they provide little meaning to be logged by yuzu and tend to overwhelm the log output at times.
* general: Replace RESULT_SUCCESS with ResultSuccessMorph2021-06-021-3/+3
| | | | Transition to PascalCase for result names.
* lm: Make use of insert_or_assign() in Log()Lioncash2021-04-231-1/+1
| | | | | Avoids unnecessary default construction of an entry in cases where no entry exists before overwriting the created entry.
* lm: Prevent redundant map lookups in Log()Lioncash2021-04-231-4/+5
| | | | | | | | | We can perform the lookup and then do the contains check by checking the end iterator. The benefit of this is that if we *do* find an entry, then we aren't hashing into the map again to find it. We can also get rid of an unused std::vector temporary while we're at it.
* lm: Resolve -Wextra-semi warningLioncash2021-04-231-1/+1
| | | | Resolves a trivial warning with clang.
* lm: Fix ReadLeb128Chloe Marcec2021-02-071-7/+9
| | | | | | Fixes assertion on Bloodstained Ritual of the Night. We would over read sometimes, this is fixed by checking if the top bit is set in the first iteration. We also lock the loop off to be only the max size of the type we can fit. Finally we changed an incorrect print of "DEBUG" to "TRACE" to reflect the proper log severity
* Print Process ID and Thread ID as hexChloe Marcec2021-01-251-2/+2
|
* Clamp string reads to buffer sizeChloe Marcec2021-01-231-3/+5
|
* Mark DestinationToString as staticChloe Marcec2021-01-201-1/+1
|
* Mark LogPacketHeaderEntry hash as noexceptChloe Marcec2021-01-201-1/+1
|
* lm: Recode LM serviceChloe Marcec2021-01-201-31/+286
| | | | Rework the service to spit out to logs instead of a seperate file as well as fix any crashes caused by lm.
* core: Remove unnecessary enum casts in log callsLioncash2020-12-071-1/+1
| | | | | Follows the video core PR. fmt doesn't require casts for enum classes anymore, so we can remove quite a few casts.
* service: Eliminate usages of the global system instanceLioncash2020-11-261-10/+6
| | | | | Completely removes all usages of the global system instance within the services code by passing in the using system instance to the services.
* ipc_helpers: Remove usage of the global system instanceLioncash2020-11-081-0/+1
| | | | | | | | | Resolves numerous deprecation warnings throughout the codebase due to inclusion of this header. Now building core should be significantly less noisy (and also relying on less global state). This also uncovered quite a few modules that were relying on indirect includes, which have also been fixed.
* core: memory: Move to Core::Memory namespace.bunnei2020-04-171-4/+4
| | | | - helpful to disambiguate Kernel::Memory namespace.
* core/memory: Migrate over Read{8, 16, 32, 64, Block} to the Memory classLioncash2019-11-261-5/+5
| | | | | | | | | | | | | | With all of the trivial parts of the memory interface moved over, we can get right into moving over the bits that are used. Note that this does require the use of GetInstance from the global system instance to be used within hle_ipc.cpp and the gdbstub. This is fine for the time being, as they both already rely on the global system instance in other functions. These will be removed in a change directed at both of these respectively. For now, it's sufficient, as it still accomplishes the goal of de-globalizing the memory code.
* core: Prepare various classes for memory read/write migrationLioncash2019-11-261-4/+9
| | | | | | | | | | Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us.
* lm: Rename Initialize to Log and implement with manager/reporterZach Hilman2019-09-221-140/+22
| | | Allows saving and clearer output of data.
* core: Add LM::Manager to systemZach Hilman2019-09-221-12/+13
| | | Allows centralized control over logging mechanisms.
* remove all occurance of specifying endianness inside BitFieldWeiyi Wang2019-02-061-1/+1
| | | | | | | This commit it automatically generated by command in zsh: sed -i -- 's/BitField<\(.*\)_le>/BitField<\1>/g' **/*(D.) BitField is now aware to endianness and default to little endian. It expects a value representation type without storage specification for its template parameter.
* Changed logging to be "Log before execution", Added more error logging, all ↵David Marcec2018-11-261-2/+2
| | | | services should now log on some level
* lm: Implement SetDestination by doing nothingLioncash2018-11-191-1/+12
| | | | | | | | | | This service function was likely intended to be a way to redirect where the output of a log went. e.g. Firing a log over a network, dumping over a tunneling session, etc. Given we always want to see the log and not change its output. It's one of the lucky service functions where the easiest implementation is to just do nothing at all and return success.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-1/+1
|
* lm: Use LOG_DEBUG for printing out trace logsLioncash2018-08-151-1/+1
| | | | | | | Using LOG_TRACE here isn't a good idea because LOG_TRACE is only enabled when yuzu is compiled in debug mode. Debug mode is also quite slow, and so we're potentially throwing away logging messages that can provide value when trying to boot games.
* lm: Handle threads and modules within the loggerLioncash2018-08-151-1/+19
| | | | | | | | | | The thread field serves to indicate which thread a log is related to and provides the length of the thread's name, so we can print that out, ditto for modules. Now we can know what threads are potentially spawning off logging messages (for example Lydie & Suelle bounces between MainThread and LoadingThread when initializing the game).
* lm: Amend name of ILoggerLioncash2018-08-011-4/+4
| | | | | Previously this was being registered with the name "Logger". While we're at it, also change the name of the class to match it.
* lm: Move LM's class declaration into the cpp fileLioncash2018-07-251-25/+28
| | | | | This isn't used directly outside of this translation unit, so we can hide it from external use.
* lm: Amend names of Initialize() in Logger and Initialize() in LMLioncash2018-07-251-6/+6
| | | | Amends these to match the information on Switch Brew.
* lm: Add missing function entry to Logger's function tableLioncash2018-07-251-0/+1
|
* Rename logging macro back to LOG_*James Rowe2018-07-021-6/+6
|
* lm: Move logging macros over to new fmt-compatible onesLioncash2018-04-241-6/+6
|
* service: Use nested namespace specifiers where applicableLioncash2018-04-191-4/+2
| | | | Tidies up namespace declarations