aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-05-10 15:57:59 -0700
committerbunnei <bunneidev@gmail.com>2021-05-10 20:34:38 -0700
commitc6de9657be71a9c659f9c991ec8d024ebf44d56e (patch)
tree8e5e3087a136fdcc218d789ae6f6457e83554919 /src/core/hle/kernel/kernel.h
parent44c763f9c6306a431739e69760ef3646141e2107 (diff)
hle: kernel: Implement named service ports using service interface factory.
- This allows us to create a new interface each time ConnectToNamedPort is called, removing the assumption that these are static.
Diffstat (limited to 'src/core/hle/kernel/kernel.h')
-rw-r--r--src/core/hle/kernel/kernel.h18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 51aaccbc7b..2d01e1ae01 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -27,6 +27,10 @@ class CoreTiming;
struct EventType;
} // namespace Core::Timing
+namespace Service::SM {
+class ServiceManager;
+}
+
namespace Kernel {
class KClientPort;
@@ -51,6 +55,9 @@ class ServiceThread;
class Synchronization;
class TimeManager;
+using ServiceInterfaceFactory =
+ std::function<KClientPort&(Service::SM::ServiceManager&, Core::System&)>;
+
namespace Init {
struct KSlabResourceCounts;
}
@@ -172,14 +179,11 @@ public:
void InvalidateCpuInstructionCacheRange(VAddr addr, std::size_t size);
- /// Adds a port to the named port table
- void AddNamedPort(std::string name, KClientPort* port);
-
- /// Finds a port within the named port table with the given name.
- NamedPortTable::iterator FindNamedPort(const std::string& name);
+ /// Registers a named HLE service, passing a factory used to open a port to that service.
+ void RegisterNamedService(std::string name, ServiceInterfaceFactory&& factory);
- /// Finds a port within the named port table with the given name.
- NamedPortTable::const_iterator FindNamedPort(const std::string& name) const;
+ /// Opens a port to a service previously registered with RegisterNamedService.
+ KClientPort* CreateNamedServicePort(std::string name);
/// Determines whether or not the given port is a valid named port.
bool IsValidNamedPort(NamedPortTable::const_iterator port) const;