xref: /haiku/headers/private/app/ServerMemoryAllocator.h (revision cefef1c3718548e2c2e8d62a658e0986d0c93219)
19a44fdc9SAxel Dörfler /*
28c5a0accSAxel Dörfler  * Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
39a44fdc9SAxel Dörfler  * Distributed under the terms of the MIT License.
49a44fdc9SAxel Dörfler  *
59a44fdc9SAxel Dörfler  * Authors:
69a44fdc9SAxel Dörfler  *		Axel Dörfler, axeld@pinc-software.de
79a44fdc9SAxel Dörfler  */
89a44fdc9SAxel Dörfler #ifndef SERVER_MEMORY_ALLOCATOR_H
99a44fdc9SAxel Dörfler #define SERVER_MEMORY_ALLOCATOR_H
109a44fdc9SAxel Dörfler 
119a44fdc9SAxel Dörfler 
129a44fdc9SAxel Dörfler #include <OS.h>
139a44fdc9SAxel Dörfler #include <List.h>
149a44fdc9SAxel Dörfler 
15*cefef1c3SAxel Dörfler 
169a44fdc9SAxel Dörfler namespace BPrivate {
179a44fdc9SAxel Dörfler 
18*cefef1c3SAxel Dörfler 
199a44fdc9SAxel Dörfler class ServerMemoryAllocator {
209a44fdc9SAxel Dörfler public:
219a44fdc9SAxel Dörfler 								ServerMemoryAllocator();
229a44fdc9SAxel Dörfler 								~ServerMemoryAllocator();
239a44fdc9SAxel Dörfler 
249a44fdc9SAxel Dörfler 			status_t			InitCheck();
259a44fdc9SAxel Dörfler 
26*cefef1c3SAxel Dörfler 			status_t			AddArea(area_id serverArea, area_id& _localArea,
27*cefef1c3SAxel Dörfler 									uint8*& _base, size_t size,
28*cefef1c3SAxel Dörfler 									bool readOnly = false);
299a44fdc9SAxel Dörfler 			void				RemoveArea(area_id serverArea);
309a44fdc9SAxel Dörfler 
31*cefef1c3SAxel Dörfler 			status_t			AreaAndBaseFor(area_id serverArea,
32*cefef1c3SAxel Dörfler 									area_id& area, uint8*& base);
339a44fdc9SAxel Dörfler 
349a44fdc9SAxel Dörfler private:
359a44fdc9SAxel Dörfler 			BList				fAreas;
369a44fdc9SAxel Dörfler };
379a44fdc9SAxel Dörfler 
38*cefef1c3SAxel Dörfler 
399a44fdc9SAxel Dörfler }	// namespace BPrivate
409a44fdc9SAxel Dörfler 
41*cefef1c3SAxel Dörfler 
42*cefef1c3SAxel Dörfler #endif	// SERVER_MEMORY_ALLOCATOR_H
43