summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp35
1 files changed, 1 insertions, 34 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 29e122dfd..054898638 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -185,17 +185,6 @@ struct KernelCore::Impl {
185 } 185 }
186 186
187 void CloseServices() { 187 void CloseServices() {
188 // Close all open server sessions and ports.
189 std::unordered_set<KAutoObject*> server_objects_;
190 {
191 std::scoped_lock lk(server_objects_lock);
192 server_objects_ = server_objects;
193 server_objects.clear();
194 }
195 for (auto* server_object : server_objects_) {
196 server_object->Close();
197 }
198
199 // Ensures all service threads gracefully shutdown. 188 // Ensures all service threads gracefully shutdown.
200 ClearServiceThreads(); 189 ClearServiceThreads();
201 } 190 }
@@ -699,9 +688,7 @@ struct KernelCore::Impl {
699 return {}; 688 return {};
700 } 689 }
701 690
702 KClientPort* port = &search->second(system.ServiceManager(), system); 691 return &search->second(system.ServiceManager(), system);
703 RegisterServerObject(&port->GetParent()->GetServerPort());
704 return port;
705 } 692 }
706 693
707 void RegisterNamedServiceHandler(std::string name, KServerPort* server_port) { 694 void RegisterNamedServiceHandler(std::string name, KServerPort* server_port) {
@@ -713,16 +700,6 @@ struct KernelCore::Impl {
713 search->second(system.ServiceManager(), server_port); 700 search->second(system.ServiceManager(), server_port);
714 } 701 }
715 702
716 void RegisterServerObject(KAutoObject* server_object) {
717 std::scoped_lock lk(server_objects_lock);
718 server_objects.insert(server_object);
719 }
720
721 void UnregisterServerObject(KAutoObject* server_object) {
722 std::scoped_lock lk(server_objects_lock);
723 server_objects.erase(server_object);
724 }
725
726 std::weak_ptr<Kernel::ServiceThread> CreateServiceThread(KernelCore& kernel, 703 std::weak_ptr<Kernel::ServiceThread> CreateServiceThread(KernelCore& kernel,
727 const std::string& name) { 704 const std::string& name) {
728 auto service_thread = std::make_shared<Kernel::ServiceThread>(kernel, name); 705 auto service_thread = std::make_shared<Kernel::ServiceThread>(kernel, name);
@@ -755,7 +732,6 @@ struct KernelCore::Impl {
755 service_thread_barrier.Sync(); 732 service_thread_barrier.Sync();
756 } 733 }
757 734
758 std::mutex server_objects_lock;
759 std::mutex registered_objects_lock; 735 std::mutex registered_objects_lock;
760 std::mutex registered_in_use_objects_lock; 736 std::mutex registered_in_use_objects_lock;
761 737
@@ -786,7 +762,6 @@ struct KernelCore::Impl {
786 std::unordered_map<std::string, ServiceInterfaceFactory> service_interface_factory; 762 std::unordered_map<std::string, ServiceInterfaceFactory> service_interface_factory;
787 std::unordered_map<std::string, ServiceInterfaceHandlerFn> service_interface_handlers; 763 std::unordered_map<std::string, ServiceInterfaceHandlerFn> service_interface_handlers;
788 NamedPortTable named_ports; 764 NamedPortTable named_ports;
789 std::unordered_set<KAutoObject*> server_objects;
790 std::unordered_set<KAutoObject*> registered_objects; 765 std::unordered_set<KAutoObject*> registered_objects;
791 std::unordered_set<KAutoObject*> registered_in_use_objects; 766 std::unordered_set<KAutoObject*> registered_in_use_objects;
792 767
@@ -1005,14 +980,6 @@ void KernelCore::RegisterNamedServiceHandler(std::string name, KServerPort* serv
1005 impl->RegisterNamedServiceHandler(std::move(name), server_port); 980 impl->RegisterNamedServiceHandler(std::move(name), server_port);
1006} 981}
1007 982
1008void KernelCore::RegisterServerObject(KAutoObject* server_object) {
1009 impl->RegisterServerObject(server_object);
1010}
1011
1012void KernelCore::UnregisterServerObject(KAutoObject* server_object) {
1013 impl->UnregisterServerObject(server_object);
1014}
1015
1016void KernelCore::RegisterKernelObject(KAutoObject* object) { 983void KernelCore::RegisterKernelObject(KAutoObject* object) {
1017 std::scoped_lock lk{impl->registered_objects_lock}; 984 std::scoped_lock lk{impl->registered_objects_lock};
1018 impl->registered_objects.insert(object); 985 impl->registered_objects.insert(object);