Files
haiku-beta6/headers/private/app/ServerMemoryAllocator.h
T
X512 47538c534f ClientMemoryAllocator: use map and reference count
- Resolve TODO about using map for server area_id lookup.

- Remove server cloned area delete request logic because it is less
  efficient and robust. Cloned area delete request messages may be
  missed if client message queue is full so it may cause cloned area
  leak.

- Implement reference counting for cloned areas instead.

Change-Id: Ie434ad36c2761ab0df00d341d55a6cea67b69830
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9667
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2025-10-06 15:10:48 +00:00

50 lines
851 B
C++

/*
* Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Axel Dörfler, [email protected]
*/
#ifndef SERVER_MEMORY_ALLOCATOR_H
#define SERVER_MEMORY_ALLOCATOR_H
#include <map>
#include <OS.h>
namespace BPrivate {
struct area_mapping {
int32 reference_count;
area_id server_area;
area_id local_area;
uint8* local_base;
};
class ServerMemoryAllocator {
public:
ServerMemoryAllocator();
~ServerMemoryAllocator();
status_t InitCheck();
status_t AddArea(area_id serverArea, area_id& _localArea,
uint8*& _base, size_t size,
bool readOnly = false);
void RemoveArea(area_id serverArea);
private:
std::map<area_id, area_mapping>
fAreas;
};
} // namespace BPrivate
#endif // SERVER_MEMORY_ALLOCATOR_H