crueter
7fda6dde73
[common] Switch to boost::unordered_flat containers ( #4326 )
...
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 >
2026-08-31 02:58:09 +02:00
lizzie
950e0f82fb
[hle/sm] implement sm:AtmosphereHasService ( #3771 )
...
should make a few more homebrew boot :)
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3771
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Reviewed-by: Maufeat <sahyno1996@gmail.com >
2026-06-15 21:56:22 +02:00
lizzie
4f4c298a39
[hle, service] fix errors related to race conditions triggering under SMG1 and SMG2 ( #3927 )
...
- service manager may add a service while someone else is finding it, so properly lock
- nvhost doesn't properly account for the fact that iterators GET FUCKING INVALIDATED
- use proper exit routine for mapping locked that failed (try/catch hell)
the last two were introduced by #3858 , but the first one has been present since ???
either way, remember that ankerl map has invalidated iterators upon erase/insert, so i accounted for that and SMG1 (and probably smg2) boot fine now
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3927
Reviewed-by: crueter <crueter@eden-emu.dev >
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
2026-05-05 07:31:08 +02:00
lizzie
a8093c2a3c
[*] change all std::unordered_map and std::unordered_set into 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 >
2026-02-10 03:34:07 +01:00
lizzie
45a2008aa6
[common] replace Common::(DerivedFrom, IsArithmetic, Size, ConvertibleTo, IsIntegral) with libstdc++ equivalents ( #290 )
...
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/290
Reviewed-by: crueter <crueter@eden-emu.dev >
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2025-11-07 17:03:01 +01:00
Kelebek1
52c35521bd
Rework time service to fix time passing offline.
2024-01-24 04:26:55 +00:00
Liam
1fdcd70bad
general: properly support multiple memory instances
2023-12-22 21:52:49 -05:00
liamwhite
d4e1f5215f
Merge pull request #12327 from liamwhite/tipc
...
sm:: fix tipc deserialization
2023-12-10 18:17:04 -05:00
Liam
e407b54319
sm:: fix tipc deserialization
2023-12-09 22:56:21 -05:00
Liam
cb8b331981
service: use interface factory in server manager
2023-12-09 13:45:25 -05:00
Liam
5f2c56cd15
core: remove ResultVal type
2023-08-08 11:09:37 -04:00
Liam
d7e9461b71
service: move hle_ipc from kernel
2023-03-01 10:39:49 -05:00
Liam
6ac62cfbe1
sm:: remove unused member
2023-03-01 10:39:36 -05:00
Liam
893a54f2bd
sm:: support service registration deferral
2023-02-21 12:19:25 -05:00
Liam
1c3a93e7c4
service: refactor server architecture
...
Converts services to have their own processes
2023-02-21 12:19:25 -05:00
Liam
710220601f
sm:: avoid excessive port recreation
2022-10-31 17:47:39 -04:00
Liam
2e56a382a9
kernel: invert session request handling flow
2022-10-31 17:44:06 -04:00
german77
c7890ebccc
core: Replace all instances of ResultCode with Result
2022-06-26 20:21:37 -05:00
Morph
2b87305d31
general: Convert source file copyright comments over to SPDX
...
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.
2022-04-23 05:55:32 -04:00
bunnei
2ffc21449d
hle: service: sm: Remove manual tracking of KServerPorts.
2022-04-08 14:11:39 -07:00
ameerj
d27abf5546
core: Remove unused includes
2021-11-03 21:42:57 -04:00
bunnei
4e7c75d592
hle: service: sm: Refactor to better manage ports.
2021-07-20 18:54:55 -07:00
bunnei
6e3c9d2b06
hle: kernel: Implement CloneCurrentObject and improve session management.
2021-05-20 21:41:49 -07:00
bunnei
1c07b56283
hle: service: sm: Add TIPC support.
...
- Fixes our error checking of names as well.
2021-05-10 20:34:38 -07:00
bunnei
11413d71ad
hle: service: sm: Improve Initialize implementation.
2021-05-10 20:34:38 -07:00
bunnei
d6844cf75f
hle: kernel: Migrate KPort, KClientPort, and KServerPort to KAutoObject.
2021-05-05 16:40:52 -07:00
bunnei
2bc45b4a13
hle: kernel: Migrate KServerPort to KAutoObject.
2021-05-05 16:40:52 -07:00
bunnei
9f1abd8188
hle: kernel: Migrate KClientPort to KAutoObject.
2021-05-05 16:40:52 -07:00
bunnei
83b96b7264
hle: kernel: Migrate KSession, KClientSession, and KServerSession to KAutoObject.
2021-05-05 16:40:51 -07:00
Lioncash
346271b80b
service: Eliminate usages of the global system instance
...
Completely removes all usages of the global system instance within the
services code by passing in the using system instance to the services.
2020-11-26 20:03:11 -05:00
Lioncash
95e8dff0d7
service/sm: Eliminate dependency on the global system instance
2020-09-17 10:43:54 -04:00
Lioncash
80d04c0daa
common/concepts: Rename IsBaseOf to DerivedFrom
...
This makes it more inline with its currently unavailable standardized
analogue std::derived_from.
While we're at it, we can also make the template match the requirements
of the standardized variant as well.
2020-08-07 08:09:57 -04:00
David Marcec
4d0ba04c73
sm: Make use of IsBaseOf for GetService
2020-08-03 21:46:14 +10:00
bunnei
4a4516868c
kernel: Implement a more accurate IPC dispatch.
2019-11-28 12:01:53 -05:00
bunnei
5cb0f276fe
kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for 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.
2019-11-24 20:15:51 -05:00
Lioncash
9c8de2ee40
kernel/server_port: Make data members private
...
With this, all kernel objects finally have all of their data members
behind an interface, making it nicer to reason about interactions with
other code (as external code no longer has the freedom to totally alter
internals and potentially messing up invariants).
2019-03-11 10:41:05 -04:00
Lioncash
ecfdfae795
service/sm: Take std::string by const reference in UnregisterService
...
Avoids the need to create a copy of the std::string instance
(potentially allocating).
The only reason RegisterService takes its argument by value is because
it's std::moved internally.
2018-11-24 00:08:13 -05:00
Zach Hilman
3b5982f9a1
sm: Implement RegisterService and UnregisterService
...
These are needed by Edizon to boot. They are used to see if a user is using SX OS, as SX OS registers a custom service called 'tx' and attempting to register a service of the same name lets the application know if it is present.
2018-11-03 20:02:18 -04:00
David Marcec
188da5880b
Ported #4296 from citra
...
This will allow us to easily remove the use of "NFC" in "System"
2018-10-06 16:49:01 +10:00
Lioncash
b1aad83113
services/sm: Amend error code constants
...
Courtesy of @ogniK5377.
This also moves them into the cpp file and limits the visibility to
where they're directly used. It also gets rid of unused or duplicate
error codes.
2018-09-14 01:44:02 -04:00
Lioncash
30638f9c95
core/core: Remove unnecessary sm/controller include
...
The only reason this include was necessary, was because the constructor
wasn't defaulted in the cpp file and the compiler would inline it
wherever it was used. However, given Controller is forward declared, all
those inlined constructors would see an incomplete type, causing a
compilation failure. So, we just place the constructor in the cpp file,
where it can see the complete type definition, allowing us to remove
this include.
2018-09-06 14:38:39 -04:00
Lioncash
38c2af9330
kernel: Move object class to its own source files
...
General moving to keep kernel object types separate from the direct
kernel code. Also essentially a preliminary cleanup before eliminating
global kernel state in the kernel code.
2018-08-01 23:34:42 -04:00
Lioncash
e664bf00ed
hle/service: Make constructors explicit where applicable
...
Prevents implicit construction and makes these lingering non-explicit
constructors consistent with the rest of the other classes in services.
2018-07-19 12:25:02 -04:00
Lioncash
4bd499d440
core: Relocate g_service_manager to the System class
...
Converts the service manager from a global into an instance-based
variable.
2018-04-20 19:44:32 -04:00
Lioncash
6d94dd21a5
service: Use nested namespace specifiers where applicable
...
Tidies up namespace declarations
2018-04-19 22:20:28 -04:00
bunnei
182548ec86
yuzu: Update license text to be consistent across project.
2018-01-13 16:22:39 -05:00
bunnei
82fb80da76
service: Clean up apm/lm/applet_oe/controller/sm ctor/dtor.
2017-12-28 15:27:30 -05:00
bunnei
714dd3da6d
hle: Use Switch formatted result codes.
2017-10-31 19:26:11 -04:00
bunnei
2ea8867549
hle: Initial implementation of NX service framework and IPC.
2017-10-14 22:18:42 -04:00
Subv
2e487c9bce
HLE/SRV: Implemented RegisterService.
...
Now system modules can do more than just crash immediately on startup.
2017-09-24 00:12:58 -05:00