![]() |
Max OS 0.3
|
Manages the creation, retention and destruction of resources of a certain type. Should be subclassed for each resource type. More...
#include <resource.h>
Public Member Functions | |
| BaseResourceRegistry (resource_type_t type) | |
| Constructs a new BaseResourceRegistry object and registers it globally. | |
| ~BaseResourceRegistry () | |
| Destructor for BaseResourceRegistry, removes it from the global list. | |
| resource_type_t | type () |
| Gets the type of resources this registry handles. | |
| bool | register_resource (Resource *resource) |
| Registers a resource in the registry. | |
| void | close_resource (Resource *resource, size_t flags) |
| Close the resource provided, if it exists in this registry. | |
| virtual Resource * | get_resource (const string &name) |
| Gets a resource from the registry by name. | |
| virtual Resource * | create_resource (const string &name, size_t flags, uintptr_t data) |
| Try to create a new resource with the specified name, will fail if the name is in use. | |
Protected Attributes | |
| common::Map< string, Resource * > | m_resources |
| The map of resource names to resource instances. | |
| common::Map< string, uint64_t > | m_resource_uses |
| The map of resource names to how many processes are using them. | |
| common::Spinlock | m_lock |
| The lock to make the registry threadsafe. | |
| resource_type_t | m_type |
| The resource type that this registry manages. | |
Manages the creation, retention and destruction of resources of a certain type. Should be subclassed for each resource type.
Definition at line 32 of file resource.h.
|
explicit |
Constructs a new BaseResourceRegistry object and registers it globally.
| type | The type of resources this registry will handle |
Definition at line 22 of file resource.cpp.
References MaxOS::processes::resources::GlobalResourceRegistry::add_registry(), and type().
| BaseResourceRegistry::~BaseResourceRegistry | ( | ) |
Destructor for BaseResourceRegistry, removes it from the global list.
Definition at line 31 of file resource.cpp.
References MaxOS::processes::resources::GlobalResourceRegistry::remove_registry().
| void BaseResourceRegistry::close_resource | ( | Resource * | resource, |
| size_t | flags | ||
| ) |
Close the resource provided, if it exists in this registry.
| resource | The resource to close |
| flags | Optional flags to pass (unused by default but registry type specific) |
Definition at line 100 of file resource.cpp.
References m_lock, m_resource_uses, and m_resources.
|
virtual |
Try to create a new resource with the specified name, will fail if the name is in use.
| name | The name of the resource to create |
| flags | Optional flags to pass (unused by default but registry type specific) |
Reimplemented in MaxOS::processes::resources::BridgeResourceRegistry, MaxOS::processes::resources::ThreadResourceRegistry, MaxOS::processes::resources::ProcessResourceRegistry, MaxOS::processes::resources::ResourceRegistry< Type >, MaxOS::processes::resources::ResourceRegistry< BridgeResource >, MaxOS::processes::resources::ResourceRegistry< MaxOS::processes::SharedMemory >, MaxOS::processes::resources::ResourceRegistry< MaxOS::processes::SharedMessageEndpoint >, MaxOS::processes::resources::ResourceRegistry< ProcessResource >, and MaxOS::processes::resources::ResourceRegistry< ThreadResource >.
Definition at line 134 of file resource.cpp.
Referenced by MaxOS::system::SyscallManager::syscall_resource_create().
|
virtual |
Gets a resource from the registry by name.
| name | The name of the resource to find |
Reimplemented in MaxOS::processes::resources::BridgeResourceRegistry, MaxOS::processes::resources::ThreadResourceRegistry, and MaxOS::processes::resources::ProcessResourceRegistry.
Definition at line 52 of file resource.cpp.
References m_lock, m_resource_uses, and m_resources.
Referenced by MaxOS::processes::resources::BridgeHandler::BridgeHandler(), MaxOS::processes::resources::BridgeResourceRegistry::get_resource(), MaxOS::processes::resources::ThreadResourceRegistry::get_resource(), and MaxOS::processes::resources::ProcessResourceRegistry::get_resource().
| bool BaseResourceRegistry::register_resource | ( | Resource * | resource | ) |
Registers a resource in the registry.
| resource | The resource to store |
Definition at line 76 of file resource.cpp.
References m_lock, m_resource_uses, and m_resources.
Referenced by MaxOS::processes::resources::BridgeResourceRegistry::create_resource(), MaxOS::processes::resources::ResourceRegistry< Type >::create_resource(), MaxOS::processes::resources::BridgeResourceRegistry::get_resource(), MaxOS::processes::resources::ThreadResourceRegistry::get_resource(), and MaxOS::processes::resources::ProcessResourceRegistry::get_resource().
| resource_type_t BaseResourceRegistry::type | ( | ) |
Gets the type of resources this registry handles.
Definition at line 41 of file resource.cpp.
References m_type.
Referenced by BaseResourceRegistry(), MaxOS::processes::resources::ResourceRegistry< Type >::create_resource(), and MaxOS::processes::resources::GlobalResourceRegistry::remove_registry().
|
protected |
The lock to make the registry threadsafe.
Definition at line 38 of file resource.h.
Referenced by close_resource(), get_resource(), and register_resource().
|
protected |
The map of resource names to how many processes are using them.
Definition at line 36 of file resource.h.
Referenced by close_resource(), get_resource(), and register_resource().
|
protected |
The map of resource names to resource instances.
Definition at line 35 of file resource.h.
Referenced by close_resource(), get_resource(), and register_resource().
|
protected |
The resource type that this registry manages.
Definition at line 40 of file resource.h.
Referenced by MaxOS::processes::resources::BridgeResourceRegistry::create_resource(), MaxOS::processes::resources::BridgeResourceRegistry::get_resource(), and type().